diff --git a/asm/non_matching/demoScreen/sub_080A2FD0.inc b/asm/non_matching/demoScreen/sub_080A2FD0.inc new file mode 100644 index 00000000..590274c2 --- /dev/null +++ b/asm/non_matching/demoScreen/sub_080A2FD0.inc @@ -0,0 +1,111 @@ + .syntax unified + push {r4, r5, lr} + ldr r0, _080A2FF4 @ =gFadeControl + ldrb r0, [r0] + cmp r0, #0 + bne _080A30A8 + movs r5, #0 + ldr r0, _080A2FF8 @ =gInput + ldrh r0, [r0] + cmp r0, #0x10 + beq _080A3020 + cmp r0, #0x10 + bgt _080A2FFC + cmp r0, #1 + beq _080A303C + cmp r0, #8 + beq _080A303C + b _080A3052 + .align 2, 0 +_080A2FF4: .4byte gFadeControl +_080A2FF8: .4byte gInput +_080A2FFC: + cmp r0, #0x40 + beq _080A3052 + cmp r0, #0x40 + bgt _080A3052 + cmp r0, #0x20 + bne _080A3052 + ldr r1, _080A301C @ =gChooseFileState + ldrb r0, [r1] + cmp r0, #0 + bne _080A3052 + movs r5, #1 + rsbs r5, r5, #0 + adds r1, #0x20 + movs r0, #0xfc + b _080A302E + .align 2, 0 +_080A301C: .4byte gChooseFileState +_080A3020: + ldr r1, _080A3038 @ =gChooseFileState + ldrb r0, [r1] + cmp r0, #0 + bne _080A3052 + movs r5, #1 + adds r1, #0x20 + movs r0, #4 +_080A302E: + strb r0, [r1] + movs r0, #0x69 + bl SoundReq + b _080A3052 + .align 2, 0 +_080A3038: .4byte gChooseFileState +_080A303C: + ldr r0, _080A3090 @ =gChooseFileState + ldrb r2, [r0] + cmp r2, #0 + bne _080A3052 + ldr r1, _080A3094 @ =gMain + movs r0, #2 + strb r0, [r1, #3] + strb r2, [r1, #4] + movs r0, #0x6a + bl SoundReq +_080A3052: + movs r4, #0x80 + lsls r4, r4, #0x12 + ldrb r0, [r4, #4] + adds r1, r5, #3 + adds r0, r0, r1 + movs r1, #3 + bl __modsi3 + strb r0, [r4, #4] + ldr r5, _080A3090 @ =gChooseFileState + movs r0, #0x10 + ldrsh r2, [r5, r0] + ldrb r1, [r4, #4] + movs r0, #0x68 + muls r0, r1, r0 + cmp r0, r2 + beq _080A3098 + adds r0, r5, #0 + adds r0, #0x20 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, r2, r0 + movs r1, #0x9c + lsls r1, r1, #1 + adds r0, r0, r1 + bl __modsi3 + strh r0, [r5, #0x10] + movs r0, #1 + b _080A309A + .align 2, 0 +_080A3090: .4byte gChooseFileState +_080A3094: .4byte gMain +_080A3098: + movs r0, #0 +_080A309A: + strb r0, [r5] + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #4] + movs r1, #0 + bl sub_080A3198 +_080A30A8: + pop {r4, r5, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/demoScreen/sub_080A30AC.inc b/asm/non_matching/demoScreen/sub_080A30AC.inc new file mode 100644 index 00000000..08be1526 --- /dev/null +++ b/asm/non_matching/demoScreen/sub_080A30AC.inc @@ -0,0 +1,107 @@ + .syntax unified + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r4, _080A3188 @ =gOamCmd + movs r1, #0 + movs r0, #0x80 + lsls r0, r0, #6 + strh r0, [r4, #4] + strh r1, [r4, #6] + movs r0, #0xc0 + lsls r0, r0, #4 + strh r0, [r4, #8] + movs r0, #0x40 + strh r0, [r4, #2] + ldr r0, _080A318C @ =gChooseFileState + movs r1, #0x10 + ldrsh r6, [r0, r1] + ldr r1, _080A3190 @ =0xFFFFFED8 + adds r0, r1, #0 + subs r0, r0, r6 + strh r0, [r4] + ldr r0, _080A3194 @ =0x08A068BF + mov r8, r0 + ldr r1, [r0] + mov r5, r8 + subs r5, #0xc + adds r1, r1, r5 + adds r0, r4, #0 + bl sub_080ADA04 + movs r1, #0xc0 + rsbs r1, r1, #0 + adds r0, r1, #0 + subs r0, r0, r6 + strh r0, [r4] + ldr r1, [r5, #4] + adds r1, r1, r5 + adds r0, r4, #0 + bl sub_080ADA04 + movs r1, #0x58 + rsbs r1, r1, #0 + adds r0, r1, #0 + subs r0, r0, r6 + strh r0, [r4] + ldr r1, [r5, #8] + adds r1, r1, r5 + adds r0, r4, #0 + bl sub_080ADA04 + movs r0, #0x10 + subs r0, r0, r6 + strh r0, [r4] + mov r0, r8 + ldr r1, [r0] + adds r1, r1, r5 + adds r0, r4, #0 + bl sub_080ADA04 + movs r0, #0x78 + subs r0, r0, r6 + strh r0, [r4] + ldr r1, [r5, #4] + adds r1, r1, r5 + adds r0, r4, #0 + bl sub_080ADA04 + movs r0, #0xe0 + subs r0, r0, r6 + strh r0, [r4] + ldr r1, [r5, #8] + adds r1, r1, r5 + adds r0, r4, #0 + bl sub_080ADA04 + movs r1, #0xa4 + lsls r1, r1, #1 + adds r0, r1, #0 + subs r0, r0, r6 + strh r0, [r4] + mov r0, r8 + ldr r1, [r0] + adds r1, r1, r5 + adds r0, r4, #0 + bl sub_080ADA04 + movs r1, #0xd8 + lsls r1, r1, #1 + adds r0, r1, #0 + subs r0, r0, r6 + strh r0, [r4] + ldr r1, [r5, #4] + adds r1, r1, r5 + adds r0, r4, #0 + bl sub_080ADA04 + movs r1, #0x86 + lsls r1, r1, #2 + adds r0, r1, #0 + subs r0, r0, r6 + strh r0, [r4] + ldr r1, [r5, #8] + adds r1, r1, r5 + adds r0, r4, #0 + bl sub_080ADA04 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, pc} + .align 2, 0 +_080A3188: .4byte gOamCmd +_080A318C: .4byte gChooseFileState +_080A3190: .4byte 0xFFFFFED8 +_080A3194: .4byte gUnk_08A068BF + .syntax divided diff --git a/asm/non_matching/demoScreen/sub_080A3198.inc b/asm/non_matching/demoScreen/sub_080A3198.inc new file mode 100644 index 00000000..449195ea --- /dev/null +++ b/asm/non_matching/demoScreen/sub_080A3198.inc @@ -0,0 +1,34 @@ + .syntax unified + push {r4, r5, lr} + ldr r1, _080A31D0 @ =0x08127CC8 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r4, [r0] + ldr r1, _080A31D4 @ =gChooseFileState + ldrh r0, [r1, #0x12] + cmp r0, r4 + beq _080A31CC + strh r4, [r1, #0x12] + ldr r5, _080A31D8 @ =something2 + ldr r0, [r5] + subs r0, #0x1e + movs r1, #0xc0 + lsls r1, r1, #1 + bl MemClear + cmp r4, #0 + beq _080A31C6DEMO + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0805F46C +_080A31C6DEMO: + ldr r1, _080A31DC @ =gScreen + movs r0, #1 + strh r0, [r1, #0xe] +_080A31CC: + pop {r4, r5, pc} + .align 2, 0 +_080A31D0: .4byte gUnk_08127CC8 +_080A31D4: .4byte gChooseFileState +_080A31D8: .4byte gUnk_08127C98 +_080A31DC: .4byte gScreen + .syntax divided diff --git a/asm/playerItem/playerItem15.s b/asm/playerItem/playerItem15.s index 32384227..6165556f 100644 --- a/asm/playerItem/playerItem15.s +++ b/asm/playerItem/playerItem15.s @@ -203,451 +203,3 @@ _080A3200: -// DEMO only functions - -.ifdef DEMO - thumb_func_start HandleChooseDemoScreen -HandleChooseDemoScreen: @ 0x080A2E18 - push {lr} - bl FlushSprites - ldr r1, _080A2E38 @ =demoFunctions - ldr r0, _080A2E3C @ =gMain - ldrb r0, [r0, #3] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r0, [r0] - bl _call_via_r0 - bl sub_080A30AC - bl sub_080AD918 - pop {pc} - .align 2, 0 -_080A2E38: .4byte demoFunctions -_080A2E3C: .4byte gMain - -thumb_func_start sub_080A2E40 -sub_080A2E40: @ 0x080A2E40 - push {r4, r5, r6, lr} - mov r6, sb - mov r5, r8 - push {r5, r6} - movs r0, #1 - bl DispReset - bl InitSoundPlayingInfo - movs r0, #0xc0 - lsls r0, r0, #0x13 - mov sb, r0 - movs r1, #0x80 - bl MemClear - bl MessageInitialize - bl EraseAllEntities - bl sub_080ADD30 - movs r0, #0 - bl sub_0801CFA8 - ldr r0, _080A2F4C @ =gUnk_02032EC0 - movs r1, #0xed - lsls r1, r1, #2 - bl MemClear - ldr r0, _080A2F50 @ =gChooseFileState - movs r1, #0x30 - bl MemClear - ldr r0, _080A2F54 @ =gBG0Buffer - movs r1, #0x80 - lsls r1, r1, #4 - mov r8, r1 - bl MemClear - bl sub_08053320 - movs r0, #0xb5 - bl LoadPaletteGroup - movs r0, #0x56 - bl LoadGfxGroup - ldr r5, _080A2F58 @ =0x089FD1B4 - ldr r4, _080A2F5C @ =0x02017760 - movs r6, #0x80 - lsls r6, r6, #1 - adds r0, r5, #0 - adds r1, r4, #0 - adds r2, r6, #0 - bl MemCopy - movs r0, #0x80 - lsls r0, r0, #2 - adds r4, r4, r0 - adds r0, r5, #0 - adds r1, r4, #0 - adds r2, r6, #0 - bl MemCopy - ldr r4, _080A2F60 @ =0x089FD2F4 - movs r5, #0x80 - lsls r5, r5, #8 - adds r0, r4, #0 - mov r1, sb - adds r2, r5, #0 - bl MemCopy - ldr r1, _080A2F64 @ =0x06010000 - adds r0, r4, #0 - adds r2, r5, #0 - bl MemCopy - ldr r4, _080A2F68 @ =0x08A05751 - ldr r1, _080A2F6C @ =gBG1Buffer - adds r0, r4, #0 - mov r2, r8 - bl MemCopy - movs r1, #0x80 - lsls r1, r1, #4 - adds r4, r4, r1 - ldr r1, _080A2F70 @ =gBG2Buffer - adds r0, r4, #0 - mov r2, r8 - bl MemCopy - ldr r1, _080A2F74 @ =gScreen - movs r2, #0 - movs r0, #0xf8 - lsls r0, r0, #5 - strh r0, [r1] - ldr r0, _080A2F78 @ =0x00001C81 - strh r0, [r1, #0x14] - ldr r0, _080A2F7C @ =0x00001D82 - strh r0, [r1, #0x20] - adds r0, #0x89 - strh r0, [r1, #0x2c] - movs r4, #1 - movs r0, #1 - strh r0, [r1, #0x1a] - strh r0, [r1, #0x26] - strh r0, [r1, #0x32] - adds r3, r1, #0 - adds r3, #0x66 - ldr r0, _080A2F80 @ =0x00001044 - strh r0, [r3] - adds r1, #0x68 - ldr r0, _080A2F84 @ =0x00000B04 - strh r0, [r1] - movs r0, #0x80 - lsls r0, r0, #0x12 - strb r2, [r0, #4] - movs r0, #0 - movs r1, #0 - bl sub_080A3198 - ldr r0, _080A2F88 @ =gMain - strb r4, [r0, #3] - movs r0, #7 - bl SoundReq - movs r0, #4 - movs r1, #8 - bl DoFade - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, pc} - .align 2, 0 -_080A2F4C: .4byte gUnk_02032EC0 -_080A2F50: .4byte gChooseFileState -_080A2F54: .4byte gBG0Buffer -_080A2F58: .4byte gUnk_089FD1B4 -_080A2F5C: .4byte 0x02017760 -_080A2F60: .4byte gUnk_089FD2F4 -_080A2F64: .4byte 0x06010000 -_080A2F68: .4byte gUnk_08A05751 -_080A2F6C: .4byte gBG1Buffer -_080A2F70: .4byte gBG2Buffer -_080A2F74: .4byte gScreen -_080A2F78: .4byte 0x00001C81 -_080A2F7C: .4byte 0x00001D82 -_080A2F80: .4byte 0x00001044 -_080A2F84: .4byte 0x00000B04 -_080A2F88: .4byte gMain - - - thumb_func_start sub_080A2F8C -sub_080A2F8C: @ 0x080A2F8C - push {lr} - ldr r0, _080A2FA4 @ =gFadeControl - ldrb r0, [r0] - cmp r0, #0 - bne _080A2FCC - ldr r2, _080A2FA8 @ =gMain - ldrb r0, [r2, #4] - cmp r0, #0 - beq _080A2FAC - cmp r0, #1 - beq _080A2FC6 - b _080A2FCC - .align 2, 0 -_080A2FA4: .4byte gFadeControl -_080A2FA8: .4byte gMain -_080A2FAC: - movs r0, #1 - strb r0, [r2, #4] - movs r1, #0x80 - lsls r1, r1, #0x12 - strb r0, [r1, #5] - strb r0, [r1, #6] - movs r0, #2 - strb r0, [r2, #3] - movs r0, #5 - movs r1, #8 - bl DoFade - b _080A2FCC -_080A2FC6: - movs r0, #2 - bl InitScreen -_080A2FCC: - pop {pc} - .align 2, 0 - - - thumb_func_start sub_080A2FD0 -sub_080A2FD0: @ 0x080A2FD0 - push {r4, r5, lr} - ldr r0, _080A2FF4 @ =gFadeControl - ldrb r0, [r0] - cmp r0, #0 - bne _080A30A8 - movs r5, #0 - ldr r0, _080A2FF8 @ =gInput - ldrh r0, [r0] - cmp r0, #0x10 - beq _080A3020 - cmp r0, #0x10 - bgt _080A2FFC - cmp r0, #1 - beq _080A303C - cmp r0, #8 - beq _080A303C - b _080A3052 - .align 2, 0 -_080A2FF4: .4byte gFadeControl -_080A2FF8: .4byte gInput -_080A2FFC: - cmp r0, #0x40 - beq _080A3052 - cmp r0, #0x40 - bgt _080A3052 - cmp r0, #0x20 - bne _080A3052 - ldr r1, _080A301C @ =gChooseFileState - ldrb r0, [r1] - cmp r0, #0 - bne _080A3052 - movs r5, #1 - rsbs r5, r5, #0 - adds r1, #0x20 - movs r0, #0xfc - b _080A302E - .align 2, 0 -_080A301C: .4byte gChooseFileState -_080A3020: - ldr r1, _080A3038 @ =gChooseFileState - ldrb r0, [r1] - cmp r0, #0 - bne _080A3052 - movs r5, #1 - adds r1, #0x20 - movs r0, #4 -_080A302E: - strb r0, [r1] - movs r0, #0x69 - bl SoundReq - b _080A3052 - .align 2, 0 -_080A3038: .4byte gChooseFileState -_080A303C: - ldr r0, _080A3090 @ =gChooseFileState - ldrb r2, [r0] - cmp r2, #0 - bne _080A3052 - ldr r1, _080A3094 @ =gMain - movs r0, #2 - strb r0, [r1, #3] - strb r2, [r1, #4] - movs r0, #0x6a - bl SoundReq -_080A3052: - movs r4, #0x80 - lsls r4, r4, #0x12 - ldrb r0, [r4, #4] - adds r1, r5, #3 - adds r0, r0, r1 - movs r1, #3 - bl __modsi3 - strb r0, [r4, #4] - ldr r5, _080A3090 @ =gChooseFileState - movs r0, #0x10 - ldrsh r2, [r5, r0] - ldrb r1, [r4, #4] - movs r0, #0x68 - muls r0, r1, r0 - cmp r0, r2 - beq _080A3098 - adds r0, r5, #0 - adds r0, #0x20 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r0, r2, r0 - movs r1, #0x9c - lsls r1, r1, #1 - adds r0, r0, r1 - bl __modsi3 - strh r0, [r5, #0x10] - movs r0, #1 - b _080A309A - .align 2, 0 -_080A3090: .4byte gChooseFileState -_080A3094: .4byte gMain -_080A3098: - movs r0, #0 -_080A309A: - strb r0, [r5] - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r0, [r0, #4] - movs r1, #0 - bl sub_080A3198 -_080A30A8: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080A30AC -sub_080A30AC: @ 0x080A30AC - push {r4, r5, r6, lr} - mov r6, r8 - push {r6} - ldr r4, _080A3188 @ =gOamCmd - movs r1, #0 - movs r0, #0x80 - lsls r0, r0, #6 - strh r0, [r4, #4] - strh r1, [r4, #6] - movs r0, #0xc0 - lsls r0, r0, #4 - strh r0, [r4, #8] - movs r0, #0x40 - strh r0, [r4, #2] - ldr r0, _080A318C @ =gChooseFileState - movs r1, #0x10 - ldrsh r6, [r0, r1] - ldr r1, _080A3190 @ =0xFFFFFED8 - adds r0, r1, #0 - subs r0, r0, r6 - strh r0, [r4] - ldr r0, _080A3194 @ =0x08A068BF - mov r8, r0 - ldr r1, [r0] - mov r5, r8 - subs r5, #0xc - adds r1, r1, r5 - adds r0, r4, #0 - bl sub_080ADA04 - movs r1, #0xc0 - rsbs r1, r1, #0 - adds r0, r1, #0 - subs r0, r0, r6 - strh r0, [r4] - ldr r1, [r5, #4] - adds r1, r1, r5 - adds r0, r4, #0 - bl sub_080ADA04 - movs r1, #0x58 - rsbs r1, r1, #0 - adds r0, r1, #0 - subs r0, r0, r6 - strh r0, [r4] - ldr r1, [r5, #8] - adds r1, r1, r5 - adds r0, r4, #0 - bl sub_080ADA04 - movs r0, #0x10 - subs r0, r0, r6 - strh r0, [r4] - mov r0, r8 - ldr r1, [r0] - adds r1, r1, r5 - adds r0, r4, #0 - bl sub_080ADA04 - movs r0, #0x78 - subs r0, r0, r6 - strh r0, [r4] - ldr r1, [r5, #4] - adds r1, r1, r5 - adds r0, r4, #0 - bl sub_080ADA04 - movs r0, #0xe0 - subs r0, r0, r6 - strh r0, [r4] - ldr r1, [r5, #8] - adds r1, r1, r5 - adds r0, r4, #0 - bl sub_080ADA04 - movs r1, #0xa4 - lsls r1, r1, #1 - adds r0, r1, #0 - subs r0, r0, r6 - strh r0, [r4] - mov r0, r8 - ldr r1, [r0] - adds r1, r1, r5 - adds r0, r4, #0 - bl sub_080ADA04 - movs r1, #0xd8 - lsls r1, r1, #1 - adds r0, r1, #0 - subs r0, r0, r6 - strh r0, [r4] - ldr r1, [r5, #4] - adds r1, r1, r5 - adds r0, r4, #0 - bl sub_080ADA04 - movs r1, #0x86 - lsls r1, r1, #2 - adds r0, r1, #0 - subs r0, r0, r6 - strh r0, [r4] - ldr r1, [r5, #8] - adds r1, r1, r5 - adds r0, r4, #0 - bl sub_080ADA04 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, pc} - .align 2, 0 -_080A3188: .4byte gOamCmd -_080A318C: .4byte gChooseFileState -_080A3190: .4byte 0xFFFFFED8 -_080A3194: .4byte gUnk_08A068BF - - thumb_func_start sub_080A3198 -sub_080A3198: @ 0x080A3198 - push {r4, r5, lr} - ldr r1, _080A31D0 @ =0x08127CC8 - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r4, [r0] - ldr r1, _080A31D4 @ =gChooseFileState - ldrh r0, [r1, #0x12] - cmp r0, r4 - beq _080A31CC - strh r4, [r1, #0x12] - ldr r5, _080A31D8 @ =something2 - ldr r0, [r5] - subs r0, #0x1e - movs r1, #0xc0 - lsls r1, r1, #1 - bl MemClear - cmp r4, #0 - beq _080A31C6DEMO - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_0805F46C -_080A31C6DEMO: - ldr r1, _080A31DC @ =gScreen - movs r0, #1 - strh r0, [r1, #0xe] -_080A31CC: - pop {r4, r5, pc} - .align 2, 0 -_080A31D0: .4byte gUnk_08127CC8 -_080A31D4: .4byte gChooseFileState -_080A31D8: .4byte gUnk_08127C98 -_080A31DC: .4byte gScreen - -.endif diff --git a/data/const/demoScreen.s b/data/const/demoScreen.s new file mode 100644 index 00000000..568bf8a3 --- /dev/null +++ b/data/const/demoScreen.s @@ -0,0 +1,18 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + .align 2 + +.ifdef DEMO +@ TODO choose demo screen +demoFunctions:: + .4byte sub_080A2E40 + .4byte sub_080A2FD0 + .4byte sub_080A2F8C + +gUnk_08127C98:: +.incbin "baserom_demo.gba", 0x127c98, 0x30 +gUnk_08127CC8:: +.incbin "baserom_demo.gba", 0x127CC8, 0x8 +.endif diff --git a/data/const/playerItem/playerItem15.s b/data/const/playerItem/playerItem15.s index 66a8ff96..22f29f54 100644 --- a/data/const/playerItem/playerItem15.s +++ b/data/const/playerItem/playerItem15.s @@ -11,17 +11,3 @@ gUnk_08127270:: @ 08127270 gUnk_08127278:: @ 08127278 .incbin "baserom.gba", 0x127278, 0x0000008 -.ifdef DEMO -@ TODO choose demo screen -demoFunctions:: - .4byte sub_080A2E40 - .4byte sub_080A2FD0 - .4byte sub_080A2F8C - -gUnk_08127C98:: -.incbin "baserom_demo.gba", 0x127c98, 0x30 -gUnk_08127CC8:: -.incbin "baserom_demo.gba", 0x127CC8, 0x8 -.endif - - diff --git a/linker.ld b/linker.ld index c4dbb416..8ec9aac3 100644 --- a/linker.ld +++ b/linker.ld @@ -69,6 +69,7 @@ SECTIONS { . = 0x000176A0; gPaletteBuffer = .; . = 0x000176E0; gUnk_020176E0 = .; . = 0x00017700; gUnk_02017700 = .; + . = 0x00017760; gUnk_02017760 = .; . = 0x00017830; gUnk_02017830 = .; . = 0x000178E0; gUnk_020178E0 = .; . = 0x00017AA0; gUnk_02017AA0 = .; @@ -920,6 +921,9 @@ SECTIONS { asm/code_080A29BC.o(.text); asm/playerItem/playerItemShield.o(.text); asm/playerItem/playerItem15.o(.text); +#ifdef DEMO + src/demoScreen.o(.text); +#endif src/audio.o(.text); asm/code_080A3480.o(.text); src/sub_080A3B84.o(.text); @@ -1652,6 +1656,9 @@ data/const/object/object1D.o(.rodata); data/data_08125104.o(.rodata); data/const/playerItem/playerItemShield.o(.rodata); data/const/playerItem/playerItem15.o(.rodata); +#ifdef DEMO + data/const/demoScreen.o(.rodata); +#endif data/data_08127280.o(.rodata); data/const/playerItem/playerItemSword.o(.rodata); data/data_08129320.o(.rodata); diff --git a/src/demoScreen.c b/src/demoScreen.c new file mode 100644 index 00000000..50ded088 --- /dev/null +++ b/src/demoScreen.c @@ -0,0 +1,96 @@ +#include "global.h" +#include "functions.h" +#include "main.h" +#include "utils.h" +#include "textbox.h" +#include "fileScreen.h" +#include "screen.h" + +extern void (*const demoFunctions[])(void); +void sub_080A30AC(); + +extern u8 gUnk_02000004; +void sub_080A3198(u32, u32); + +extern u8 gUnk_02017760[]; +extern u8 gUnk_08A05751[]; + +// sprite_table +extern void gUnk_089FD1B4; +extern void gUnk_089FD2F4; + +extern u8 gUnk_02000006; + +void HandleChooseDemoScreen(void) { + FlushSprites(); + demoFunctions[gMain.funcIndex](); + sub_080A30AC(); + sub_080AD918(); +} + +void sub_080A2E40(void) { + DispReset(1); + InitSoundPlayingInfo(); + MemClear((void*)0x6000000, 0x80); + MessageInitialize(); + EraseAllEntities(); + sub_080ADD30(); + sub_0801CFA8(0); + MemClear(&gUnk_02032EC0, 0x3b4); + MemClear(&gChooseFileState, 0x30); + MemClear(&gBG0Buffer, 0x800); + sub_08053320(); + LoadPaletteGroup(0xb5); + LoadGfxGroup(0x56); + MemCopy(&gUnk_089FD1B4, &gUnk_02017760[0], 0x100); + MemCopy(&gUnk_089FD1B4, &gUnk_02017760[0x200], 0x100); + MemCopy(&gUnk_089FD2F4, (void*)0x6000000, 0x8000); + MemCopy(&gUnk_089FD2F4, (void*)0x6010000, 0x8000); + MemCopy(&gUnk_08A05751, &gBG1Buffer, 0x800); + MemCopy(&gUnk_08A05751[0x800], &gBG2Buffer, 0x800); + gScreen.lcd.displayControl = 0x1f00; + gScreen.bg.bg1Control = 0x1c81; + gScreen.affine.bg2Control = 0x1d82; + gScreen.affine.bg3Control = 0x1e0b; + gScreen.bg.bg1Updated = 1; + gScreen.affine.bg2Updated = 1; + gScreen.affine.bg3Updated = 1; + gScreen.controls.layerFXControl = 0x1044; + gScreen.controls.alphaBlend = 0xb04; + { + // TODO write to 0x2000004 + u32 addr = (0x80 << 0x12); + *(u8*)(addr + 4) = 0; + } + sub_080A3198(0, 0); + gMain.funcIndex = 1; + SoundReq(BGM_FILE_SELECT); + DoFade(4, 8); +} + +void sub_080A2F8C(void) { + if (gFadeControl.active == 0) { + switch (gMain.transition) { + case 0: + gMain.transition = 1; + { + // TODO write to 0x2000005 + u32 addr = (0x80 << 0x12); + *(u8*)(addr + 5) = 1; + *(u8*)(addr + 6) = 1; + } + gMain.funcIndex = 2; + DoFade(5, 8); + break; + case 1: + InitScreen(2); + break; + } + } +} + +ASM_FUNC("asm/non_matching/demoScreen/sub_080A2FD0.inc", void sub_080A2FD0(void)) + +ASM_FUNC("asm/non_matching/demoScreen/sub_080A30AC.inc", void sub_080A30AC(void)) + +ASM_FUNC("asm/non_matching/demoScreen/sub_080A3198.inc", void sub_080A3198(u32 param_1, u32 param_2))