mirror of https://github.com/zeldaret/tmc.git
Merge pull request #232 from notyourav/save_ld
strip fake linker symbols
This commit is contained in:
commit
0e72c3ee15
|
@ -168,7 +168,7 @@ sub_080197AC: @ 0x080197AC
|
||||||
bx lr
|
bx lr
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
_080197C4: .4byte gUnk_02025EB0
|
_080197C4: .4byte gUnk_02025EB0
|
||||||
_080197C8: .4byte gBGAffSettings
|
_080197C8: .4byte gScreen + 0x20
|
||||||
_080197CC: .4byte gUnk_080B77C0
|
_080197CC: .4byte gUnk_080B77C0
|
||||||
_080197D0: .4byte gUnk_0200B650
|
_080197D0: .4byte gUnk_0200B650
|
||||||
|
|
||||||
|
|
|
@ -195,10 +195,10 @@ sub_080040EC: @ 0x080040EC
|
||||||
b _080040F2
|
b _080040F2
|
||||||
_080040F2:
|
_080040F2:
|
||||||
push {r2, r3, r4, lr}
|
push {r2, r3, r4, lr}
|
||||||
ldr r4, _08004374 @ =gUnk_03000BF6
|
ldr r4, _08004374 @ =gRoomControls + 6
|
||||||
ldrh r4, [r4]
|
ldrh r4, [r4]
|
||||||
subs r2, r2, r4
|
subs r2, r2, r4
|
||||||
ldr r4, _08004378 @ =gUnk_03000BF8
|
ldr r4, _08004378 @ =gRoomControls + 8
|
||||||
ldrh r4, [r4]
|
ldrh r4, [r4]
|
||||||
subs r3, r3, r4
|
subs r3, r3, r4
|
||||||
ldr r4, _0800437C @ =0x000003F0
|
ldr r4, _0800437C @ =0x000003F0
|
||||||
|
@ -607,8 +607,8 @@ _08004364: .4byte gUnk_02024048
|
||||||
_08004368: .4byte gRoomControls
|
_08004368: .4byte gRoomControls
|
||||||
_0800436C: .4byte 0x0000016E
|
_0800436C: .4byte 0x0000016E
|
||||||
_08004370: .4byte 0x0000011E
|
_08004370: .4byte 0x0000011E
|
||||||
_08004374: .4byte gUnk_03000BF6
|
_08004374: .4byte gRoomControls + 6
|
||||||
_08004378: .4byte gUnk_03000BF8
|
_08004378: .4byte gRoomControls + 8
|
||||||
_0800437C: .4byte 0x000003F0
|
_0800437C: .4byte 0x000003F0
|
||||||
_08004380: .4byte gUnk_08000248
|
_08004380: .4byte gUnk_08000248
|
||||||
_08004384: .4byte 0x000FFFFF
|
_08004384: .4byte 0x000FFFFF
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
thumb_func_start sub_08077FEC
|
thumb_func_start sub_08077FEC
|
||||||
sub_08077FEC: @ 0x08077FEC
|
sub_08077FEC: @ 0x08077FEC
|
||||||
push {lr}
|
push {lr}
|
||||||
ldr r0, _08078000 @ =gUnk_03004020
|
ldr r0, _08078000 @ =gPlayerState + 0xA0
|
||||||
ldr r2, _08078004 @ =gUnk_0811BFE8
|
ldr r2, _08078004 @ =gUnk_0811BFE8
|
||||||
ldrb r1, [r0]
|
ldrb r1, [r0]
|
||||||
lsls r1, r1, #2
|
lsls r1, r1, #2
|
||||||
|
@ -18,7 +18,7 @@ sub_08077FEC: @ 0x08077FEC
|
||||||
bl _call_via_r1
|
bl _call_via_r1
|
||||||
pop {pc}
|
pop {pc}
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
_08078000: .4byte gUnk_03004020
|
_08078000: .4byte gPlayerState + 0xA0
|
||||||
_08078004: .4byte gUnk_0811BFE8
|
_08078004: .4byte gUnk_0811BFE8
|
||||||
|
|
||||||
thumb_func_start sub_08078008
|
thumb_func_start sub_08078008
|
||||||
|
|
|
@ -1135,12 +1135,12 @@ _080026A0: .4byte gUnk_08002342
|
||||||
gUnk_080026A4::
|
gUnk_080026A4::
|
||||||
@ normal entities
|
@ normal entities
|
||||||
.4byte gUnk_020000B0 @ enemy target? (player)
|
.4byte gUnk_020000B0 @ enemy target? (player)
|
||||||
.4byte gUnk_03003D68 @ first linked list
|
.4byte gEntityLists - 8 @ first linked list
|
||||||
.4byte gUnk_03003DB0 @ last linked list
|
.4byte gEntityLists + 64 @ last linked list
|
||||||
.4byte gUnk_03005FBC @ entity table
|
.4byte gUnk_03005FBC @ entity table
|
||||||
@ managers
|
@ managers
|
||||||
.4byte gUnk_020000B0
|
.4byte gUnk_020000B0
|
||||||
.4byte gUnk_03003DA8
|
.4byte gEntityLists + 56
|
||||||
.4byte gCollidableCount
|
.4byte gCollidableCount
|
||||||
.4byte gUnk_03005FBC
|
.4byte gUnk_03005FBC
|
||||||
|
|
||||||
|
|
|
@ -130,7 +130,7 @@ sub_0803026C: @ 0x0803026C
|
||||||
strb r0, [r3]
|
strb r0, [r3]
|
||||||
ldrb r2, [r3]
|
ldrb r2, [r3]
|
||||||
lsls r0, r2, #2
|
lsls r0, r2, #2
|
||||||
ldr r5, _080302A8 @ =gUnk_0300110C
|
ldr r5, _080302A8 @ =armos_data
|
||||||
adds r0, r0, r5
|
adds r0, r0, r5
|
||||||
ldrh r1, [r0]
|
ldrh r1, [r0]
|
||||||
cmp r1, #0
|
cmp r1, #0
|
||||||
|
@ -150,7 +150,7 @@ sub_0803026C: @ 0x0803026C
|
||||||
str r0, [r2]
|
str r0, [r2]
|
||||||
b _080302BA
|
b _080302BA
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
_080302A8: .4byte gUnk_0300110C
|
_080302A8: .4byte gScreenTransition + 0x6c
|
||||||
_080302AC:
|
_080302AC:
|
||||||
adds r0, r4, #0
|
adds r0, r4, #0
|
||||||
adds r0, #0x84
|
adds r0, #0x84
|
||||||
|
|
|
@ -474,7 +474,7 @@ _0803EF1C: .4byte gUnk_020000B0
|
||||||
sub_0803EF20: @ 0x0803EF20
|
sub_0803EF20: @ 0x0803EF20
|
||||||
push {r4, r5, r6, r7, lr}
|
push {r4, r5, r6, r7, lr}
|
||||||
adds r5, r0, #0
|
adds r5, r0, #0
|
||||||
ldr r6, _0803EF5C @ =gUnk_03003D80
|
ldr r6, _0803EF5C @ =gEntityLists + 16
|
||||||
ldr r4, [r6, #4]
|
ldr r4, [r6, #4]
|
||||||
cmp r4, r6
|
cmp r4, r6
|
||||||
beq _0803EF6A
|
beq _0803EF6A
|
||||||
|
@ -503,7 +503,7 @@ _0803EF2E:
|
||||||
strb r0, [r1]
|
strb r0, [r1]
|
||||||
b _0803EF6C
|
b _0803EF6C
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
_0803EF5C: .4byte gUnk_03003D80
|
_0803EF5C: .4byte gEntityLists + 16
|
||||||
_0803EF60: .4byte gUnk_080D08C8
|
_0803EF60: .4byte gUnk_080D08C8
|
||||||
_0803EF64:
|
_0803EF64:
|
||||||
ldr r4, [r4, #4]
|
ldr r4, [r4, #4]
|
||||||
|
|
|
@ -39,10 +39,10 @@ HandleGameplayScreen: @ 08051A28
|
||||||
_08051A64:
|
_08051A64:
|
||||||
pop {r4, pc}
|
pop {r4, pc}
|
||||||
.byte 0x00, 0x00
|
.byte 0x00, 0x00
|
||||||
_08051A68: .4byte gUnk_030010A0
|
_08051A68: .4byte gScreenTransition
|
||||||
_08051A6C: .4byte gUnk_080FC9D8
|
_08051A6C: .4byte gUnk_080FC9D8
|
||||||
_08051A70x: .4byte gMain
|
_08051A70x: .4byte gMain
|
||||||
_08051A74x: .4byte gUnk_02002A40
|
_08051A74x: .4byte gSave
|
||||||
.else
|
.else
|
||||||
thumb_func_start HandleGameplayScreen
|
thumb_func_start HandleGameplayScreen
|
||||||
HandleGameplayScreen: @ 0x08051988
|
HandleGameplayScreen: @ 0x08051988
|
||||||
|
@ -341,7 +341,7 @@ _08051B5A:
|
||||||
ldr r0, _08051BC8 @ =gUnk_02034490
|
ldr r0, _08051BC8 @ =gUnk_02034490
|
||||||
strb r4, [r0]
|
strb r4, [r0]
|
||||||
.ifdef DEMO_JP
|
.ifdef DEMO_JP
|
||||||
ldr r0, _08051C30 @ =gUnk_030010A0
|
ldr r0, _08051C30 @ =gScreenTransition
|
||||||
adds r0,#0x31
|
adds r0,#0x31
|
||||||
ldrb r0,[r0,#0x0]
|
ldrb r0,[r0,#0x0]
|
||||||
cmp r0,#0x0
|
cmp r0,#0x0
|
||||||
|
@ -408,7 +408,7 @@ _08051BC0: .4byte 0x800B0000
|
||||||
_08051BC4: .4byte gMain
|
_08051BC4: .4byte gMain
|
||||||
_08051BC8: .4byte gUnk_02034490
|
_08051BC8: .4byte gUnk_02034490
|
||||||
.ifdef DEMO_JP
|
.ifdef DEMO_JP
|
||||||
_08051C30: .4byte gUnk_030010A0
|
_08051C30: .4byte gScreenTransition
|
||||||
.endif
|
.endif
|
||||||
_08051BCC: .4byte gRoomVars
|
_08051BCC: .4byte gRoomVars
|
||||||
.endif
|
.endif
|
||||||
|
|
|
@ -623,7 +623,7 @@ MakeFadeBuff256: @ 0x080B2124
|
||||||
mul r3, r2, r3
|
mul r3, r2, r3
|
||||||
mov r4, #0x400
|
mov r4, #0x400
|
||||||
sub r2, r4, r2, lsl #2
|
sub r2, r4, r2, lsl #2
|
||||||
ldr r7, _080B21A8 @ =gUnk_02000006
|
ldr r7, _080B21A8 @ =0x02000006
|
||||||
ldrb r7, [r7]
|
ldrb r7, [r7]
|
||||||
ldr ip, _080B21AC @ =gUnk_08000F54
|
ldr ip, _080B21AC @ =gUnk_08000F54
|
||||||
add ip, ip, r7, lsl #4
|
add ip, ip, r7, lsl #4
|
||||||
|
@ -654,7 +654,7 @@ _080B2150:
|
||||||
bx lr
|
bx lr
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
_080B21A4: .4byte 0x01010101
|
_080B21A4: .4byte 0x01010101
|
||||||
_080B21A8: .4byte gUnk_02000006
|
_080B21A8: .4byte 0x02000000 + 6 @ brightness preference
|
||||||
_080B21AC: .4byte gUnk_08000F54
|
_080B21AC: .4byte gUnk_08000F54
|
||||||
|
|
||||||
ldr r11, _080B2270 @ =gUpdateContext
|
ldr r11, _080B2270 @ =gUpdateContext
|
||||||
|
|
|
@ -28,7 +28,7 @@ _0805ACF0:
|
||||||
movs r0, #0x7f
|
movs r0, #0x7f
|
||||||
ands r0, r1
|
ands r0, r1
|
||||||
subs r5, r0, #1
|
subs r5, r0, #1
|
||||||
ldr r6, _0805AD3C @ =gUnk_03003DA0
|
ldr r6, _0805AD3C @ =gEntityLists + 48
|
||||||
ldr r4, [r6, #4]
|
ldr r4, [r6, #4]
|
||||||
cmp r4, r6
|
cmp r4, r6
|
||||||
beq _0805AD32
|
beq _0805AD32
|
||||||
|
@ -66,7 +66,7 @@ _0805AD34:
|
||||||
mov r8, r3
|
mov r8, r3
|
||||||
pop {r4, r5, r6, r7, pc}
|
pop {r4, r5, r6, r7, pc}
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
_0805AD3C: .4byte gUnk_03003DA0
|
_0805AD3C: .4byte gEntityLists + 48
|
||||||
_0805AD40: .4byte 0x00001609
|
_0805AD40: .4byte 0x00001609
|
||||||
_0805AD44: .4byte 0x0000FFFF
|
_0805AD44: .4byte 0x0000FFFF
|
||||||
.syntax divided
|
.syntax divided
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
.syntax unified
|
.syntax unified
|
||||||
push {r4, r5, r6, r7, lr}
|
push {r4, r5, r6, r7, lr}
|
||||||
sub sp, #4
|
sub sp, #4
|
||||||
ldr r7, _0806F114 @ =gUnk_03003DA8
|
ldr r7, _0806F114 @ =gEntityLists + 56
|
||||||
ldr r5, [r7, #4]
|
ldr r5, [r7, #4]
|
||||||
movs r0, #0
|
movs r0, #0
|
||||||
cmp r5, r7
|
cmp r5, r7
|
||||||
|
@ -61,5 +61,5 @@ _0806F10E:
|
||||||
add sp, #4
|
add sp, #4
|
||||||
pop {r4, r5, r6, r7, pc}
|
pop {r4, r5, r6, r7, pc}
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
_0806F114: .4byte gUnk_03003DA8
|
_0806F114: .4byte gEntityLists + 56
|
||||||
.syntax divided
|
.syntax divided
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
movs r2, #1
|
movs r2, #1
|
||||||
b _08077F42
|
b _08077F42
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
_08077F34: .4byte gStats
|
_08077F34: .4byte gSave + 0xa8
|
||||||
_08077F38:
|
_08077F38:
|
||||||
ldrb r0, [r2, #0xd]
|
ldrb r0, [r2, #0xd]
|
||||||
movs r2, #0
|
movs r2, #0
|
||||||
|
|
|
@ -124,7 +124,7 @@ _08056844:
|
||||||
bl WriteBit
|
bl WriteBit
|
||||||
b _08056942
|
b _08056942
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
_08056854: .4byte gUnk_0200005C
|
_08056854: .4byte gMessage+0xc
|
||||||
_08056858:
|
_08056858:
|
||||||
ldrh r3, [r5, #0x22]
|
ldrh r3, [r5, #0x22]
|
||||||
cmp r3, #0xe
|
cmp r3, #0xe
|
||||||
|
|
|
@ -28,7 +28,7 @@ _080A245E:
|
||||||
ldrb r0, [r5, #0xe]
|
ldrb r0, [r5, #0xe]
|
||||||
strb r0, [r5, #0xa]
|
strb r0, [r5, #0xa]
|
||||||
str r1, [r5, #0x54]
|
str r1, [r5, #0x54]
|
||||||
ldr r2, _080A24B4 @ =gUnk_03003D90
|
ldr r2, _080A24B4 @ =gEntityLists + 32
|
||||||
ldr r4, [r2, #4]
|
ldr r4, [r2, #4]
|
||||||
cmp r4, r2
|
cmp r4, r2
|
||||||
beq _080A24BE
|
beq _080A24BE
|
||||||
|
@ -63,7 +63,7 @@ _080A2478:
|
||||||
str r4, [r5, #0x54]
|
str r4, [r5, #0x54]
|
||||||
b _080A24BE
|
b _080A24BE
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
_080A24B4: .4byte gUnk_03003D90
|
_080A24B4: .4byte gEntityLists + 32
|
||||||
_080A24B8:
|
_080A24B8:
|
||||||
ldr r4, [r4, #4]
|
ldr r4, [r4, #4]
|
||||||
cmp r4, r2
|
cmp r4, r2
|
||||||
|
|
|
@ -37,7 +37,7 @@ _0809EE60:
|
||||||
ldrb r1, [r5, #0x15]
|
ldrb r1, [r5, #0x15]
|
||||||
bl sub_08079E58
|
bl sub_08079E58
|
||||||
_0809EE80:
|
_0809EE80:
|
||||||
ldr r6, _0809EEA8 @ =gUnk_03003D80
|
ldr r6, _0809EEA8 @ =gEntityLists + 16
|
||||||
ldr r4, [r6, #4]
|
ldr r4, [r6, #4]
|
||||||
cmp r6, r4
|
cmp r6, r4
|
||||||
beq _0809EF74
|
beq _0809EF74
|
||||||
|
@ -57,7 +57,7 @@ _0809EE88:
|
||||||
mov pc, r0
|
mov pc, r0
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
_0809EEA4: .4byte gPlayerEntity
|
_0809EEA4: .4byte gPlayerEntity
|
||||||
_0809EEA8: .4byte gUnk_03003D80
|
_0809EEA8: .4byte gEntityLists + 16
|
||||||
_0809EEAC: .4byte _0809EEB0
|
_0809EEAC: .4byte _0809EEB0
|
||||||
_0809EEB0: @ jump table
|
_0809EEB0: @ jump table
|
||||||
.4byte _0809EF1E @ case 0
|
.4byte _0809EF1E @ case 0
|
||||||
|
|
|
@ -342,7 +342,7 @@ _0808BDAE:
|
||||||
sub_0808BDB0: @ 0x0808BDB0
|
sub_0808BDB0: @ 0x0808BDB0
|
||||||
push {r4, r5, r6, lr}
|
push {r4, r5, r6, lr}
|
||||||
adds r3, r0, #0
|
adds r3, r0, #0
|
||||||
ldr r4, _0808BDD4 @ =gUnk_03003DA0
|
ldr r4, _0808BDD4 @ =gEntityLists + 48
|
||||||
ldr r2, [r4, #4]
|
ldr r2, [r4, #4]
|
||||||
movs r0, #0
|
movs r0, #0
|
||||||
str r0, [r3, #0x50]
|
str r0, [r3, #0x50]
|
||||||
|
@ -359,7 +359,7 @@ _0808BDC4:
|
||||||
str r2, [r3, #0x50]
|
str r2, [r3, #0x50]
|
||||||
b _0808BDE6
|
b _0808BDE6
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
_0808BDD4: .4byte gUnk_03003DA0
|
_0808BDD4: .4byte gEntityLists + 48
|
||||||
_0808BDD8: .4byte 0x0000FFFF
|
_0808BDD8: .4byte 0x0000FFFF
|
||||||
_0808BDDC: .4byte 0x00000C09
|
_0808BDDC: .4byte 0x00000C09
|
||||||
_0808BDE0:
|
_0808BDE0:
|
||||||
|
|
|
@ -101,10 +101,10 @@ _0800861A:
|
||||||
ldrh r4, [r0, r2]
|
ldrh r4, [r0, r2]
|
||||||
movs r2, #0x48
|
movs r2, #0x48
|
||||||
ldr r5, [r0, r2]
|
ldr r5, [r0, r2]
|
||||||
ldr r1, _080088B4 @ =gUnk_03000BF6
|
ldr r1, _080088B4 @ =gRoomControls + 6
|
||||||
ldrh r1, [r1]
|
ldrh r1, [r1]
|
||||||
subs r3, r3, r1
|
subs r3, r3, r1
|
||||||
ldr r1, _080088B8 @ =gUnk_03000BF8
|
ldr r1, _080088B8 @ =gRoomControls + 8
|
||||||
ldrh r1, [r1]
|
ldrh r1, [r1]
|
||||||
subs r4, r4, r1
|
subs r4, r4, r1
|
||||||
eors r2, r2
|
eors r2, r2
|
||||||
|
@ -439,8 +439,8 @@ _080088A4: .4byte gUnk_080084BC
|
||||||
_080088A8: .4byte gPlayerState
|
_080088A8: .4byte gPlayerState
|
||||||
_080088AC: .4byte gUnk_0800851C
|
_080088AC: .4byte gUnk_0800851C
|
||||||
_080088B0: .4byte gUnk_080082DC
|
_080088B0: .4byte gUnk_080082DC
|
||||||
_080088B4: .4byte gUnk_03000BF6
|
_080088B4: .4byte gRoomControls + 6
|
||||||
_080088B8: .4byte gUnk_03000BF8
|
_080088B8: .4byte gRoomControls + 8
|
||||||
_080088BC: .4byte gPlayerEntity
|
_080088BC: .4byte gPlayerEntity
|
||||||
_080088C0: .4byte 0x000003F0
|
_080088C0: .4byte 0x000003F0
|
||||||
_080088C4: .4byte gUnk_08000248
|
_080088C4: .4byte gUnk_08000248
|
||||||
|
|
|
@ -275,7 +275,7 @@ sub_08077880: @ 0x08077880
|
||||||
lsls r0, r0, #2
|
lsls r0, r0, #2
|
||||||
ldr r1, _080778C4 @ =gUnk_0811BE48
|
ldr r1, _080778C4 @ =gUnk_0811BE48
|
||||||
adds r5, r0, r1
|
adds r5, r0, r1
|
||||||
ldr r1, _080778C8 @ =gUnk_03004010
|
ldr r1, _080778C8 @ =gPlayerState + 0x90
|
||||||
ldrb r0, [r5]
|
ldrb r0, [r5]
|
||||||
cmp r0, #0
|
cmp r0, #0
|
||||||
beq _080778A0
|
beq _080778A0
|
||||||
|
@ -301,7 +301,7 @@ _080778C0:
|
||||||
pop {r4, r5, r6, pc}
|
pop {r4, r5, r6, pc}
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
_080778C4: .4byte gUnk_0811BE48
|
_080778C4: .4byte gUnk_0811BE48
|
||||||
_080778C8: .4byte gUnk_03004010
|
_080778C8: .4byte gPlayerState + 0x90
|
||||||
|
|
||||||
thumb_func_start sub_080778CC
|
thumb_func_start sub_080778CC
|
||||||
sub_080778CC: @ 0x080778CC
|
sub_080778CC: @ 0x080778CC
|
||||||
|
|
|
@ -379,7 +379,7 @@ sub_0807FEC8: @ 0x0807FEC8
|
||||||
strh r0, [r4, #0x18]
|
strh r0, [r4, #0x18]
|
||||||
pop {r4, r5, pc}
|
pop {r4, r5, pc}
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
_0807FEEC: .4byte gUnk_03003FC0
|
_0807FEEC: .4byte gPlayerState+0x40
|
||||||
|
|
||||||
thumb_func_start sub_0807FEF0
|
thumb_func_start sub_0807FEF0
|
||||||
sub_0807FEF0: @ 0x0807FEF0
|
sub_0807FEF0: @ 0x0807FEF0
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
.include "asm/macros.inc"
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.section .rodata
|
|
||||||
.align 2
|
|
||||||
|
|
||||||
.ifdef DEMO_JP
|
|
||||||
@ TODO check whether this is the same save as one of the DEMO_USA ones
|
|
||||||
.incbin "data_081320FC/_DEMO_JP.bin"
|
|
||||||
.endif
|
|
|
@ -155,9 +155,6 @@ typedef struct LinkedList {
|
||||||
} LinkedList;
|
} LinkedList;
|
||||||
|
|
||||||
extern LinkedList gEntityLists[9];
|
extern LinkedList gEntityLists[9];
|
||||||
extern LinkedList gUnk_03003D90;
|
|
||||||
|
|
||||||
extern LinkedList gUnk_03003DA0;
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
ENT_DID_INIT = 0x1,
|
ENT_DID_INIT = 0x1,
|
||||||
|
|
|
@ -78,7 +78,6 @@ extern const u8 gGlobalGfxAndPalettes[];
|
||||||
extern void (*const gUnk_080FC93C[])();
|
extern void (*const gUnk_080FC93C[])();
|
||||||
extern u32 gUsedPalettes;
|
extern u32 gUsedPalettes;
|
||||||
extern u8 gTextGfxBuffer[];
|
extern u8 gTextGfxBuffer[];
|
||||||
extern u8 gUnk_02001B40;
|
|
||||||
extern u8 gUnk_02022030;
|
extern u8 gUnk_02022030;
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -274,7 +274,6 @@ extern u8 gQuiverSizes[];
|
||||||
extern u16 gWalletSizes[];
|
extern u16 gWalletSizes[];
|
||||||
|
|
||||||
extern PlayerState gPlayerState;
|
extern PlayerState gPlayerState;
|
||||||
extern Stats gStats;
|
|
||||||
extern Entity gPlayerEntity;
|
extern Entity gPlayerEntity;
|
||||||
|
|
||||||
void SetPlayerControl(PlayerControlMode mode);
|
void SetPlayerControl(PlayerControlMode mode);
|
||||||
|
|
|
@ -72,7 +72,7 @@ typedef struct {
|
||||||
s16 lightLevel;
|
s16 lightLevel;
|
||||||
u8 filler3[2];
|
u8 filler3[2];
|
||||||
u8 unk_10[4];
|
u8 unk_10[4];
|
||||||
u32 roomFlags;
|
u32 flags;
|
||||||
u32 unk3;
|
u32 unk3;
|
||||||
u8 filler4[48];
|
u8 filler4[48];
|
||||||
u8 filler5[28];
|
u8 filler5[28];
|
||||||
|
@ -95,13 +95,29 @@ typedef struct {
|
||||||
u32 spritePtr;
|
u32 spritePtr;
|
||||||
} EntityData;
|
} EntityData;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
u16 field_0x0;
|
||||||
|
u16 field_0x2;
|
||||||
|
u8 field_0x4;
|
||||||
|
u8 field_0x5;
|
||||||
|
u8 field_0x6;
|
||||||
|
u8 field_0x7;
|
||||||
|
} struct_030010EC;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
u16 data[32];
|
||||||
|
u16 field_0xac;
|
||||||
|
u16 field_0xae;
|
||||||
|
} struct_0300110C;
|
||||||
|
|
||||||
// Status of the player's positioning within the scene.
|
// Status of the player's positioning within the scene.
|
||||||
typedef struct {
|
typedef struct {
|
||||||
u8 area_next;
|
u8 area_next;
|
||||||
u8 room_next;
|
u8 room_next;
|
||||||
u8 start_anim;
|
u8 start_anim;
|
||||||
u8 spawn_type;
|
u8 spawn_type;
|
||||||
Coords start_pos;
|
s16 start_pos_x;
|
||||||
|
s16 start_pos_y;
|
||||||
u8 layer;
|
u8 layer;
|
||||||
u8 field_0x15;
|
u8 field_0x15;
|
||||||
u8 dungeon_area;
|
u8 dungeon_area;
|
||||||
|
@ -140,10 +156,8 @@ typedef struct {
|
||||||
u16 field_0x46;
|
u16 field_0x46;
|
||||||
u16 field_0x48;
|
u16 field_0x48;
|
||||||
u16 field_0x4a;
|
u16 field_0x4a;
|
||||||
u8 minecart_data[0x20];
|
struct_030010EC minecart_data[4];
|
||||||
u8 field_0x6c[0x40];
|
struct_0300110C armos_data;
|
||||||
u16 field_0xac;
|
|
||||||
u16 field_0xae;
|
|
||||||
} ScreenTransition;
|
} ScreenTransition;
|
||||||
extern ScreenTransition gScreenTransition;
|
extern ScreenTransition gScreenTransition;
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,8 @@ typedef struct {
|
||||||
/*0x0A8*/ Stats stats;
|
/*0x0A8*/ Stats stats;
|
||||||
/*0x0D0*/ u8 fillerD0[0x71];
|
/*0x0D0*/ u8 fillerD0[0x71];
|
||||||
/*0x141*/ u8 unk141[128];
|
/*0x141*/ u8 unk141[128];
|
||||||
/*0x1C1*/ u8 unk1C1[667];
|
/*0x1C1*/ u8 unk1C1[155];
|
||||||
|
/*0x25C*/ u8 flags[0x200];
|
||||||
/*0x45C*/ u8 unk45C[0x10];
|
/*0x45C*/ u8 unk45C[0x10];
|
||||||
/*0x46C*/ u8 unk46C[0x20];
|
/*0x46C*/ u8 unk46C[0x20];
|
||||||
/*0x48C*/ u32 unk48C[8];
|
/*0x48C*/ u32 unk48C[8];
|
||||||
|
|
|
@ -78,7 +78,6 @@ typedef struct {
|
||||||
u16 _8;
|
u16 _8;
|
||||||
} OAMCommand;
|
} OAMCommand;
|
||||||
|
|
||||||
extern BgControls gBgControls;
|
|
||||||
extern Screen gScreen;
|
extern Screen gScreen;
|
||||||
extern OAMCommand gOamCmd;
|
extern OAMCommand gOamCmd;
|
||||||
|
|
||||||
|
|
40
linker.ld
40
linker.ld
|
@ -11,13 +11,11 @@ MEMORY {
|
||||||
|
|
||||||
SECTIONS {
|
SECTIONS {
|
||||||
ewram (NOLOAD) : ALIGN(4) {
|
ewram (NOLOAD) : ALIGN(4) {
|
||||||
. = 0x00000006; gUnk_02000006 = .;
|
|
||||||
. = 0x00000010; gUnk_02000010 = .;
|
. = 0x00000010; gUnk_02000010 = .;
|
||||||
. = 0x00000020; gUnk_02000020 = .;
|
. = 0x00000020; gUnk_02000020 = .;
|
||||||
. = 0x00000030; gUnk_02000030 = .;
|
. = 0x00000030; gUnk_02000030 = .;
|
||||||
. = 0x00000040; gUnk_02000040 = .;
|
. = 0x00000040; gUnk_02000040 = .;
|
||||||
. = 0x00000050; gMessage = .;
|
. = 0x00000050; gMessage = .;
|
||||||
. = 0x0000005C; gUnk_0200005C = .;
|
|
||||||
. = 0x00000070; gUpdateVisibleTiles = .;
|
. = 0x00000070; gUpdateVisibleTiles = .;
|
||||||
. = 0x00000080; gMenu = .;
|
. = 0x00000080; gMenu = .;
|
||||||
. = 0x00000080; gIntroState = .;
|
. = 0x00000080; gIntroState = .;
|
||||||
|
@ -30,13 +28,9 @@ SECTIONS {
|
||||||
. = 0x00001A00; gPaletteList = .;
|
. = 0x00001A00; gPaletteList = .;
|
||||||
. = 0x00001A3C; gUnk_02001A3C = .;
|
. = 0x00001A3C; gUnk_02001A3C = .;
|
||||||
. = 0x00001A40; gBG3Buffer = .;
|
. = 0x00001A40; gBG3Buffer = .;
|
||||||
. = 0x00001B40; gUnk_02001B40 = .;
|
|
||||||
. = 0x00002A40; gSave = .;
|
. = 0x00002A40; gSave = .;
|
||||||
. = 0x00002A40; gUnk_02002A40 = .;
|
|
||||||
. = 0x00002AA0; gUnk_02002AA0 = .;
|
|
||||||
. = 0x00002AC0; gUnk_02002AC0 = .;
|
. = 0x00002AC0; gUnk_02002AC0 = .;
|
||||||
. = 0x00002AC8; gUnk_02002AC8 = .;
|
. = 0x00002AC8; gUnk_02002AC8 = .;
|
||||||
. = 0x00002AE8; gStats = .;
|
|
||||||
. = 0x00002B0E; gUnk_02002B0E = .;
|
. = 0x00002B0E; gUnk_02002B0E = .;
|
||||||
. = 0x00002B32; gUnk_02002B32 = .;
|
. = 0x00002B32; gUnk_02002B32 = .;
|
||||||
. = 0x00002B54; gUnk_02002B54 = .;
|
. = 0x00002B54; gUnk_02002B54 = .;
|
||||||
|
@ -46,8 +40,6 @@ SECTIONS {
|
||||||
. = 0x00002C81; gUnk_02002C81 = .;
|
. = 0x00002C81; gUnk_02002C81 = .;
|
||||||
. = 0x00002C8E; gUnk_02002C8E = .;
|
. = 0x00002C8E; gUnk_02002C8E = .;
|
||||||
. = 0x00002C9C; gGlobalFlags = .;
|
. = 0x00002C9C; gGlobalFlags = .;
|
||||||
. = 0x00002E9C; gUnk_02002E9C = .;
|
|
||||||
. = 0x00002ECC; gUnk_02002ECC = .;
|
|
||||||
. = 0x00002F00; gMapDataTopSpecial = .;
|
. = 0x00002F00; gMapDataTopSpecial = .;
|
||||||
. = 0x00006F00; gUnk_02006F00 = .;
|
. = 0x00006F00; gUnk_02006F00 = .;
|
||||||
. = 0x0000AF00; gUnk_0200AF00 = .;
|
. = 0x0000AF00; gUnk_0200AF00 = .;
|
||||||
|
@ -78,7 +70,6 @@ SECTIONS {
|
||||||
. = 0x00018EB0; gUnk_02018EB0 = .;
|
. = 0x00018EB0; gUnk_02018EB0 = .;
|
||||||
. = 0x00018EE0; gUnk_02018EE0 = .;
|
. = 0x00018EE0; gUnk_02018EE0 = .;
|
||||||
. = 0x00019EE0; gUnk_02019EE0 = .;
|
. = 0x00019EE0; gUnk_02019EE0 = .;
|
||||||
. = 0x00019F6C; gUnk_02019F6C = .;
|
|
||||||
. = 0x0001AEE0; gUnk_0201AEE0 = .;
|
. = 0x0001AEE0; gUnk_0201AEE0 = .;
|
||||||
. = 0x00021EE0; gSoundPlayingInfo = .;
|
. = 0x00021EE0; gSoundPlayingInfo = .;
|
||||||
. = 0x00021F00; gUnk_02021F00 = .;
|
. = 0x00021F00; gUnk_02021F00 = .;
|
||||||
|
@ -96,7 +87,6 @@ SECTIONS {
|
||||||
. = 0x000227F0; gUnk_020227F0 = .;
|
. = 0x000227F0; gUnk_020227F0 = .;
|
||||||
. = 0x000227F8; gUnk_020227F8 = .;
|
. = 0x000227F8; gUnk_020227F8 = .;
|
||||||
. = 0x00022800; gUnk_02022800 = .;
|
. = 0x00022800; gUnk_02022800 = .;
|
||||||
. = 0x0002281E; gUnk_0202281E = .;
|
|
||||||
. = 0x00022830; gUnk_02022830 = .;
|
. = 0x00022830; gUnk_02022830 = .;
|
||||||
. = 0x00024030; gMessageChoices = .;
|
. = 0x00024030; gMessageChoices = .;
|
||||||
. = 0x00024048; gUnk_02024048 = .;
|
. = 0x00024048; gUnk_02024048 = .;
|
||||||
|
@ -122,11 +112,9 @@ SECTIONS {
|
||||||
. = 0x00033A90; gArea = .;
|
. = 0x00033A90; gArea = .;
|
||||||
. = 0x00033AB8; gUnk_02033AB8 = .;
|
. = 0x00033AB8; gUnk_02033AB8 = .;
|
||||||
. = 0x00033ACC; gUnk_02033ACC = .;
|
. = 0x00033ACC; gUnk_02033ACC = .;
|
||||||
. = 0x000342CC; gUnk_020342CC = .;
|
|
||||||
. = 0x000342F8; gUnk_020342F8 = .;
|
. = 0x000342F8; gUnk_020342F8 = .;
|
||||||
. = 0x00034330; gUnk_02034330 = .;
|
. = 0x00034330; gUnk_02034330 = .;
|
||||||
. = 0x00034350; gRoomVars = .;
|
. = 0x00034350; gRoomVars = .;
|
||||||
. = 0x00034364; gRoomFlags = .;
|
|
||||||
. = 0x00034398; gUnk_02034398 = .;
|
. = 0x00034398; gUnk_02034398 = .;
|
||||||
. = 0x00034480; gUnk_02034480 = .;
|
. = 0x00034480; gUnk_02034480 = .;
|
||||||
. = 0x00034490; gUnk_02034490 = .;
|
. = 0x00034490; gUnk_02034490 = .;
|
||||||
|
@ -135,7 +123,6 @@ SECTIONS {
|
||||||
. = 0x000344B0; gBG2Buffer = .;
|
. = 0x000344B0; gBG2Buffer = .;
|
||||||
. = 0x000344F0; gUnk_020344F0 = .;
|
. = 0x000344F0; gUnk_020344F0 = .;
|
||||||
. = 0x00034CB0; gBG0Buffer = .;
|
. = 0x00034CB0; gBG0Buffer = .;
|
||||||
. = 0x00034CB2; gUnk_02034CB2 = .;
|
|
||||||
. = 0x00034CF0; gUnk_02034CF0 = .;
|
. = 0x00034CF0; gUnk_02034CF0 = .;
|
||||||
. = 0x00034D30; gUnk_02034D30 = .;
|
. = 0x00034D30; gUnk_02034D30 = .;
|
||||||
. = 0x00034DF0; gUnk_02034DF0 = .;
|
. = 0x00034DF0; gUnk_02034DF0 = .;
|
||||||
|
@ -177,41 +164,23 @@ SECTIONS {
|
||||||
. = 0x00000B80; gUnk_03000B80 = .;
|
. = 0x00000B80; gUnk_03000B80 = .;
|
||||||
. = 0x00000BD4; gUnk_03000BD4 = .;
|
. = 0x00000BD4; gUnk_03000BD4 = .;
|
||||||
. = 0x00000BF0; gRoomControls = .;
|
. = 0x00000BF0; gRoomControls = .;
|
||||||
. = 0x00000BF6; gUnk_03000BF6 = .;
|
|
||||||
. = 0x00000BF8; gUnk_03000BF8 = .;
|
|
||||||
. = 0x00000C24; gUnk_03000C24 = .;
|
. = 0x00000C24; gUnk_03000C24 = .;
|
||||||
. = 0x00000C30; gUnk_03000C30 = .;
|
. = 0x00000C30; gUnk_03000C30 = .;
|
||||||
. = 0x00000E10; gCollidableList = .;
|
. = 0x00000E10; gCollidableList = .;
|
||||||
. = 0x00000F50; gScreen = .;
|
. = 0x00000F50; gScreen = .;
|
||||||
. = 0x00000F58; gBG0Settings = .;
|
|
||||||
. = 0x00000F64; gBG1Settings = .;
|
|
||||||
. = 0x00000F70; gBGAffSettings = .;
|
|
||||||
. = 0x00000F88; gBgControls = .;
|
|
||||||
. = 0x00000FBC; gUnk_03000FBC = .;
|
|
||||||
. = 0x00000FD0; gFadeControl = .;
|
. = 0x00000FD0; gFadeControl = .;
|
||||||
. = 0x00000FF0; gInput = .;
|
. = 0x00000FF0; gInput = .;
|
||||||
. = 0x00001000; gMain = .;
|
. = 0x00001000; gMain = .;
|
||||||
. = 0x00001010; gOamCmd = .;
|
. = 0x00001010; gOamCmd = .;
|
||||||
. = 0x00001020; gUnk_03001020 = .;
|
. = 0x00001020; gUnk_03001020 = .;
|
||||||
. = 0x000010A0; gScreenTransition = .;
|
. = 0x000010A0; gScreenTransition = .;
|
||||||
. = 0x000010A0; gUnk_030010A0 = .;
|
|
||||||
. = 0x000010AC; gUnk_030010AC = .;
|
|
||||||
. = 0x000010EC; gUnk_030010EC = .;
|
|
||||||
. = 0x0000110C; gUnk_0300110C = .;
|
|
||||||
. = 0x00001150; gRand = .;
|
. = 0x00001150; gRand = .;
|
||||||
. = 0x00001160; gPlayerEntity = .;
|
. = 0x00001160; gPlayerEntity = .;
|
||||||
. = 0x00001198; gUnk_03001198 = .;
|
|
||||||
. = 0x000011E8; gUnk_030011E8 = .;
|
. = 0x000011E8; gUnk_030011E8 = .;
|
||||||
. = 0x000015A0; gUnk_030015A0 = .;
|
. = 0x000015A0; gUnk_030015A0 = .;
|
||||||
. = 0x00003BE0; gUnk_03003BE0 = .;
|
. = 0x00003BE0; gUnk_03003BE0 = .;
|
||||||
. = 0x00003C70; gUnk_03003C70 = .;
|
. = 0x00003C70; gUnk_03003C70 = .;
|
||||||
. = 0x00003D68; gUnk_03003D68 = .;
|
|
||||||
. = 0x00003D70; gEntityLists = .;
|
. = 0x00003D70; gEntityLists = .;
|
||||||
. = 0x00003D80; gUnk_03003D80 = .;
|
|
||||||
. = 0x00003D90; gUnk_03003D90 = .;
|
|
||||||
. = 0x00003DA0; gUnk_03003DA0 = .;
|
|
||||||
. = 0x00003DA8; gUnk_03003DA8 = .;
|
|
||||||
. = 0x00003DB0; gUnk_03003DB0 = .;
|
|
||||||
. = 0x00003DB8; gCollidableCount = .;
|
. = 0x00003DB8; gCollidableCount = .;
|
||||||
. = 0x00003DBC; gEntCount = .;
|
. = 0x00003DBC; gEntCount = .;
|
||||||
. = 0x00003DC0; gPriorityHandler = .;
|
. = 0x00003DC0; gPriorityHandler = .;
|
||||||
|
@ -221,18 +190,12 @@ SECTIONS {
|
||||||
. = 0x00003DF0; gUnk_03003DF0 = .;
|
. = 0x00003DF0; gUnk_03003DF0 = .;
|
||||||
. = 0x00003DF8; gUnk_03003DF8 = .;
|
. = 0x00003DF8; gUnk_03003DF8 = .;
|
||||||
. = 0x00003F80; gPlayerState = .;
|
. = 0x00003F80; gPlayerState = .;
|
||||||
. = 0x00003FC0; gUnk_03003FC0 = .;
|
|
||||||
. = 0x00004010; gUnk_03004010 = .;
|
|
||||||
. = 0x00004020; gUnk_03004020 = .;
|
|
||||||
. = 0x00004030; gUnk_03004030 = .;
|
. = 0x00004030; gUnk_03004030 = .;
|
||||||
. = 0x00004040; gPlayerClones = .;
|
. = 0x00004040; gPlayerClones = .;
|
||||||
. = 0x0000404C; SoundMainRAM_Buffer = .;
|
. = 0x0000404C; SoundMainRAM_Buffer = .;
|
||||||
. = 0x0000404D; gUnk_0300404D = .;
|
. = 0x0000404D; gUnk_0300404D = .;
|
||||||
. = 0x000043D0; gSoundInfo = .;
|
. = 0x000043D0; gSoundInfo = .;
|
||||||
. = 0x00004D50; gMPlayJumpTable = .;
|
. = 0x00004D50; gMPlayJumpTable = .;
|
||||||
. = 0x00004D54; gUnk_03004D54 = .;
|
|
||||||
. = 0x00004DD8; gUnk_03004DD8 = .;
|
|
||||||
. = 0x00004DDC; gUnk_03004DDC = .;
|
|
||||||
. = 0x00004DE0; gCgbChans = .;
|
. = 0x00004DE0; gCgbChans = .;
|
||||||
. = 0x00004EE0; gMPlayInfos = .;
|
. = 0x00004EE0; gMPlayInfos = .;
|
||||||
. = 0x000055E0; gMPlayMemAccArea = .;
|
. = 0x000055E0; gMPlayMemAccArea = .;
|
||||||
|
@ -1707,9 +1670,6 @@ SECTIONS {
|
||||||
src/flagDebug.o(.rodata);
|
src/flagDebug.o(.rodata);
|
||||||
data/const/playerItem/playerItem13.o(.rodata);
|
data/const/playerItem/playerItem13.o(.rodata);
|
||||||
src/title.o(.rodata);
|
src/title.o(.rodata);
|
||||||
#ifdef DEMO_JP
|
|
||||||
data/data_081320FC.o(.rodata);
|
|
||||||
#endif
|
|
||||||
src/projectile.o(.rodata);
|
src/projectile.o(.rodata);
|
||||||
data/const/playerItem/playerItemGustJar.o(.rodata);
|
data/const/playerItem/playerItemGustJar.o(.rodata);
|
||||||
data/gfx/fixed_type_gfx.o(.rodata);
|
data/gfx/fixed_type_gfx.o(.rodata);
|
||||||
|
|
|
@ -19,8 +19,6 @@ extern u8 gUnk_08A05751[];
|
||||||
extern void gUnk_089FD1B4;
|
extern void gUnk_089FD1B4;
|
||||||
extern void gUnk_089FD2F4;
|
extern void gUnk_089FD2F4;
|
||||||
|
|
||||||
extern u8 gUnk_02000006;
|
|
||||||
|
|
||||||
extern u16 gUnk_08127CC8[4];
|
extern u16 gUnk_08127CC8[4];
|
||||||
extern void* gUnk_08127C98;
|
extern void* gUnk_08127C98;
|
||||||
extern u8 gUnk_08A068BF[129];
|
extern u8 gUnk_08A068BF[129];
|
||||||
|
|
|
@ -2,22 +2,14 @@
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include "functions.h"
|
#include "functions.h"
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
u16 unk0;
|
|
||||||
u16 filler2[32];
|
|
||||||
u16 unk66;
|
|
||||||
} struct_0300110C;
|
|
||||||
|
|
||||||
extern struct_0300110C gUnk_0300110C;
|
|
||||||
|
|
||||||
void sub_080300AC(void) {
|
void sub_080300AC(void) {
|
||||||
MemClear(&gUnk_0300110C.unk0, 0x44);
|
MemClear(&gScreenTransition.armos_data, sizeof(gScreenTransition.armos_data));
|
||||||
gUnk_0300110C.unk66 = 0xff;
|
gScreenTransition.armos_data.field_0xae = 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_080300C4(void) {
|
void sub_080300C4(void) {
|
||||||
if (gScreenTransition.field_0xae == 0xff) {
|
if (gScreenTransition.armos_data.field_0xae == 0xff) {
|
||||||
gScreenTransition.field_0xac = 0;
|
gScreenTransition.armos_data.field_0xac = 0;
|
||||||
MemClear(gScreenTransition.field_0x6c, sizeof gScreenTransition.field_0x6c);
|
MemClear(&gScreenTransition.armos_data.data, sizeof(gScreenTransition.armos_data.data));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -921,7 +921,7 @@ void sub_0805144C(void) {
|
||||||
|
|
||||||
void sub_08051458(void) {
|
void sub_08051458(void) {
|
||||||
sub_080503A8(gMenu.column_idx + 9);
|
sub_080503A8(gMenu.column_idx + 9);
|
||||||
MemCopy(&gUnk_02001B40, &gUnk_02022030, 0x400);
|
MemCopy(gBG3Buffer + 0x80, &gUnk_02022030, 0x400);
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 sub_080514BC(u32);
|
u32 sub_080514BC(u32);
|
||||||
|
|
|
@ -36,7 +36,7 @@ u32 CheckGlobalFlag(u32 flag) {
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 CheckRoomFlag(u32 flag) {
|
u32 CheckRoomFlag(u32 flag) {
|
||||||
return ReadBit(&gRoomVars.roomFlags, flag);
|
return ReadBit(&gRoomVars.flags, flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 CheckLocalFlagsByBank(u32 offset, u32 flag, u32 length) {
|
u32 CheckLocalFlagsByBank(u32 offset, u32 flag, u32 length) {
|
||||||
|
@ -53,7 +53,7 @@ u32 CheckGlobalFlags(u32 flag, u32 length) {
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 CheckRoomFlags(u32 flag, u32 length) {
|
u32 CheckRoomFlags(u32 flag, u32 length) {
|
||||||
return CheckBits(&gRoomVars.roomFlags, flag, length);
|
return CheckBits(&gRoomVars.flags, flag, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetLocalFlagByBank(u32 offset, u32 flag) {
|
void SetLocalFlagByBank(u32 offset, u32 flag) {
|
||||||
|
@ -92,7 +92,7 @@ void SetGlobalFlag(u32 flag) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetRoomFlag(u32 flag) {
|
void SetRoomFlag(u32 flag) {
|
||||||
WriteBit(&gRoomFlags, flag);
|
WriteBit(&gRoomVars.flags, flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClearLocalFlagByBank(u32 offset, u32 flag) {
|
void ClearLocalFlagByBank(u32 offset, u32 flag) {
|
||||||
|
@ -127,5 +127,5 @@ void ClearGlobalFlag(u32 flag) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClearRoomFlag(u32 flag) {
|
void ClearRoomFlag(u32 flag) {
|
||||||
ClearBit(&gRoomFlags, flag);
|
ClearBit(&gRoomVars.flags, flag);
|
||||||
}
|
}
|
||||||
|
|
25
src/game.c
25
src/game.c
|
@ -15,8 +15,6 @@
|
||||||
#include "message.h"
|
#include "message.h"
|
||||||
#include "game.h"
|
#include "game.h"
|
||||||
|
|
||||||
extern u32 gUnk_03003FC0;
|
|
||||||
|
|
||||||
extern u8 gUnk_080FCA84[];
|
extern u8 gUnk_080FCA84[];
|
||||||
extern u8 gUnk_080FCAC8[];
|
extern u8 gUnk_080FCAC8[];
|
||||||
extern u8 gUnk_02024090[];
|
extern u8 gUnk_02024090[];
|
||||||
|
@ -379,8 +377,8 @@ void InitializePlayer(void) {
|
||||||
pl->flags |= ENT_COLLIDE | ENT_20;
|
pl->flags |= ENT_COLLIDE | ENT_20;
|
||||||
pl->spritePriority.b0 = 4;
|
pl->spritePriority.b0 = 4;
|
||||||
pl->health = gSave.stats.health;
|
pl->health = gSave.stats.health;
|
||||||
pl->x.HALF.HI = gScreenTransition.player_status.start_pos.HALF.x;
|
pl->x.HALF.HI = gScreenTransition.player_status.start_pos_x;
|
||||||
pl->y.HALF.HI = gScreenTransition.player_status.start_pos.HALF.y;
|
pl->y.HALF.HI = gScreenTransition.player_status.start_pos_y;
|
||||||
pl->animationState = gScreenTransition.player_status.start_anim;
|
pl->animationState = gScreenTransition.player_status.start_anim;
|
||||||
pl->collisionLayer = gScreenTransition.player_status.layer;
|
pl->collisionLayer = gScreenTransition.player_status.layer;
|
||||||
UpdateSpriteForCollisionLayer(pl);
|
UpdateSpriteForCollisionLayer(pl);
|
||||||
|
@ -428,22 +426,23 @@ u32 CheckHasMap(void) {
|
||||||
|
|
||||||
s32 ModHealth(s32 delta) {
|
s32 ModHealth(s32 delta) {
|
||||||
s32 newHealth;
|
s32 newHealth;
|
||||||
|
Stats* stats = &gSave.stats;
|
||||||
|
|
||||||
newHealth = gStats.health + delta;
|
newHealth = stats->health + delta;
|
||||||
if (newHealth < 0) {
|
if (newHealth < 0) {
|
||||||
newHealth = 0;
|
newHealth = 0;
|
||||||
}
|
}
|
||||||
if (gStats.maxHealth < newHealth) {
|
if (stats->maxHealth < newHealth) {
|
||||||
newHealth = (u32)gStats.maxHealth;
|
newHealth = (u32)stats->maxHealth;
|
||||||
}
|
}
|
||||||
gStats.health = newHealth;
|
stats->health = newHealth;
|
||||||
gPlayerEntity.health = newHealth;
|
gPlayerEntity.health = newHealth;
|
||||||
return newHealth;
|
return newHealth;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModRupees(s32 delta) {
|
void ModRupees(s32 delta) {
|
||||||
s32 newRupeeCount;
|
s32 newRupeeCount;
|
||||||
Stats* s = &gStats;
|
Stats* s = &gSave.stats;
|
||||||
|
|
||||||
newRupeeCount = s->rupees + delta;
|
newRupeeCount = s->rupees + delta;
|
||||||
if (newRupeeCount < 0) {
|
if (newRupeeCount < 0) {
|
||||||
|
@ -614,8 +613,8 @@ static u32 StairsAreValid(void) {
|
||||||
|
|
||||||
void InitParachuteRoom(void) {
|
void InitParachuteRoom(void) {
|
||||||
gScreenTransition.transitioningOut = 1;
|
gScreenTransition.transitioningOut = 1;
|
||||||
gScreenTransition.player_status.start_pos.HALF.x = (gPlayerEntity.x.HALF.HI - gRoomControls.roomOriginX) & 0x3F8;
|
gScreenTransition.player_status.start_pos_x = (gPlayerEntity.x.HALF.HI - gRoomControls.roomOriginX) & 0x3F8;
|
||||||
gScreenTransition.player_status.start_pos.HALF.y = (gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY) & 0x3F8;
|
gScreenTransition.player_status.start_pos_y = (gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY) & 0x3F8;
|
||||||
gScreenTransition.player_status.start_anim = 4;
|
gScreenTransition.player_status.start_anim = 4;
|
||||||
gScreenTransition.player_status.spawn_type = PL_SPAWN_PARACHUTE_FORWARD;
|
gScreenTransition.player_status.spawn_type = PL_SPAWN_PARACHUTE_FORWARD;
|
||||||
gScreenTransition.player_status.area_next = gRoomControls.areaID;
|
gScreenTransition.player_status.area_next = gRoomControls.areaID;
|
||||||
|
@ -983,8 +982,8 @@ void sub_080531F8(void) {
|
||||||
|
|
||||||
void sub_08053250(void) {
|
void sub_08053250(void) {
|
||||||
gScreenTransition.player_status.spawn_type = PL_SPAWN_DEFAULT;
|
gScreenTransition.player_status.spawn_type = PL_SPAWN_DEFAULT;
|
||||||
gScreenTransition.player_status.start_pos.HALF.x = gPlayerEntity.x.HALF.HI - gRoomControls.roomOriginX;
|
gScreenTransition.player_status.start_pos_x = gPlayerEntity.x.HALF.HI - gRoomControls.roomOriginX;
|
||||||
gScreenTransition.player_status.start_pos.HALF.y = gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY;
|
gScreenTransition.player_status.start_pos_y = gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY;
|
||||||
gScreenTransition.player_status.start_anim = gPlayerEntity.animationState;
|
gScreenTransition.player_status.start_anim = gPlayerEntity.animationState;
|
||||||
gScreenTransition.player_status.layer = gPlayerEntity.collisionLayer;
|
gScreenTransition.player_status.layer = gPlayerEntity.collisionLayer;
|
||||||
gScreenTransition.player_status.area_next = gRoomControls.areaID;
|
gScreenTransition.player_status.area_next = gRoomControls.areaID;
|
||||||
|
|
|
@ -20,7 +20,6 @@ extern u8 gUnk_03003DF0[];
|
||||||
extern u8 gUnk_03003BE0;
|
extern u8 gUnk_03003BE0;
|
||||||
extern Entity* gPlayerClones[3];
|
extern Entity* gPlayerClones[3];
|
||||||
extern u16 gUnk_080B2CD8[];
|
extern u16 gUnk_080B2CD8[];
|
||||||
extern u32 gUnk_03000FBC;
|
|
||||||
|
|
||||||
extern void sub_080ADD70();
|
extern void sub_080ADD70();
|
||||||
extern void sub_0801C25C();
|
extern void sub_0801C25C();
|
||||||
|
@ -69,7 +68,7 @@ void VBlankIntr(void) {
|
||||||
m4aSoundVSync();
|
m4aSoundVSync();
|
||||||
if (gMain.interruptFlag == 0) {
|
if (gMain.interruptFlag == 0) {
|
||||||
DispCtrlSet();
|
DispCtrlSet();
|
||||||
DmaCopy32(0, &gUnk_03000FBC, &gUnk_02022730, 16);
|
DmaCopy32(0, &gScreen._6c, &gUnk_02022730, 16);
|
||||||
gMain.interruptFlag = 1;
|
gMain.interruptFlag = 1;
|
||||||
}
|
}
|
||||||
sub_08016BF8();
|
sub_08016BF8();
|
||||||
|
|
|
@ -161,18 +161,18 @@ void sub_0805B210(Manager1A* this) {
|
||||||
}
|
}
|
||||||
switch (tmp->unk_00) {
|
switch (tmp->unk_00) {
|
||||||
case 0:
|
case 0:
|
||||||
gScreenTransition.player_status.start_pos.HALF.x = tmp->unk_04;
|
gScreenTransition.player_status.start_pos_x = tmp->unk_04;
|
||||||
gScreenTransition.player_status.start_pos.HALF.y = tmp->unk_06;
|
gScreenTransition.player_status.start_pos_y = tmp->unk_06;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
gScreenTransition.player_status.start_pos.HALF.x =
|
gScreenTransition.player_status.start_pos_x =
|
||||||
gPlayerEntity.x.HALF.HI - gRoomControls.roomOriginX + tmp->unk_04;
|
gPlayerEntity.x.HALF.HI - gRoomControls.roomOriginX + tmp->unk_04;
|
||||||
gScreenTransition.player_status.start_pos.HALF.y =
|
gScreenTransition.player_status.start_pos_y =
|
||||||
gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY + tmp->unk_06;
|
gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY + tmp->unk_06;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
gScreenTransition.player_status.start_pos.HALF.x = tmp->unk_04;
|
gScreenTransition.player_status.start_pos_x = tmp->unk_04;
|
||||||
gScreenTransition.player_status.start_pos.HALF.y = tmp->unk_06;
|
gScreenTransition.player_status.start_pos_y = tmp->unk_06;
|
||||||
gScreenTransition.player_status.spawn_type = 6;
|
gScreenTransition.player_status.spawn_type = 6;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,9 +19,9 @@ void Manager27_Main(Entity* this) {
|
||||||
|
|
||||||
gUnk_08108D10[this->action](this);
|
gUnk_08108D10[this->action](this);
|
||||||
if (CheckLocalFlagByBank(0x300, this->type + 0x67)) {
|
if (CheckLocalFlagByBank(0x300, this->type + 0x67)) {
|
||||||
gScreenTransition.field_0xac |= (1 << this->type);
|
gScreenTransition.armos_data.field_0xac |= (1 << this->type);
|
||||||
} else {
|
} else {
|
||||||
gScreenTransition.field_0xac &= ~(1 << this->type);
|
gScreenTransition.armos_data.field_0xac &= ~(1 << this->type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -111,7 +111,7 @@ Entity* Manager28_FindMatchingEntity(EntityData* unk1) {
|
||||||
LinkedList* tmp;
|
LinkedList* tmp;
|
||||||
x = unk1->xPos + gRoomControls.roomOriginX;
|
x = unk1->xPos + gRoomControls.roomOriginX;
|
||||||
y = unk1->yPos + gRoomControls.roomOriginY;
|
y = unk1->yPos + gRoomControls.roomOriginY;
|
||||||
tmp = &gUnk_03003D90;
|
tmp = &gEntityLists[4];
|
||||||
for (i = tmp->first; (u32)i != (u32)tmp; i = i->next) {
|
for (i = tmp->first; (u32)i != (u32)tmp; i = i->next) {
|
||||||
if (x == i->x.HALF.HI && y == i->y.HALF.HI && unk1->id == i->id && 3 == i->kind && unk1->type == i->type) {
|
if (x == i->x.HALF.HI && y == i->y.HALF.HI && unk1->id == i->id && 3 == i->kind && unk1->type == i->type) {
|
||||||
return i;
|
return i;
|
||||||
|
|
|
@ -29,8 +29,8 @@ void Manager2C_Main(Manager2C* manager) {
|
||||||
gScreenTransition.player_status.area_next = manager->manager.unk_0b;
|
gScreenTransition.player_status.area_next = manager->manager.unk_0b;
|
||||||
gScreenTransition.player_status.room_next = manager->manager.unk_0e;
|
gScreenTransition.player_status.room_next = manager->manager.unk_0e;
|
||||||
gScreenTransition.player_status.start_anim = manager->field_0x37;
|
gScreenTransition.player_status.start_anim = manager->field_0x37;
|
||||||
gScreenTransition.player_status.start_pos.HALF.x = manager->field_0x3c;
|
gScreenTransition.player_status.start_pos_x = manager->field_0x3c;
|
||||||
gScreenTransition.player_status.start_pos.HALF.y = manager->field_0x3e;
|
gScreenTransition.player_status.start_pos_y = manager->field_0x3e;
|
||||||
gScreenTransition.player_status.layer = manager->field_0x36;
|
gScreenTransition.player_status.layer = manager->field_0x36;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,9 +2,6 @@
|
||||||
#include "entity.h"
|
#include "entity.h"
|
||||||
#include "functions.h"
|
#include "functions.h"
|
||||||
|
|
||||||
extern u32 gUnk_03000BF8;
|
|
||||||
extern u32 gUnk_03000BF6;
|
|
||||||
|
|
||||||
void Manager2D_Main(Entity* this) {
|
void Manager2D_Main(Entity* this) {
|
||||||
SetTile(0x4014, 0x5c3, 1);
|
SetTile(0x4014, 0x5c3, 1);
|
||||||
if ((gRoomControls.roomOriginY + 200 < gPlayerEntity.y.HALF.HI) &&
|
if ((gRoomControls.roomOriginY + 200 < gPlayerEntity.y.HALF.HI) &&
|
||||||
|
|
|
@ -165,14 +165,12 @@ void ManagerBHelper_Main(Manager* this) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extern Manager gUnk_03003DB0;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Replace an entity that is currently being monitored with a new one
|
* Replace an entity that is currently being monitored with a new one
|
||||||
*/
|
*/
|
||||||
void ReplaceMonitoredEntity(Entity* old, Entity* new) {
|
void ReplaceMonitoredEntity(Entity* old, Entity* new) {
|
||||||
ManagerBHelper* current;
|
ManagerBHelper* current;
|
||||||
Manager* end = &gUnk_03003DB0;
|
Manager* end = (Manager*)&gEntityLists[8];
|
||||||
u32 i;
|
u32 i;
|
||||||
for (current = (ManagerBHelper*)end->next; (Manager*)current != end;
|
for (current = (ManagerBHelper*)end->next; (Manager*)current != end;
|
||||||
current = (ManagerBHelper*)current->manager.next) {
|
current = (ManagerBHelper*)current->manager.next) {
|
||||||
|
|
|
@ -209,8 +209,8 @@ void sub_08058B5C(ManagerC* this, u32 unk1) {
|
||||||
gScreenTransition.player_status.area_next = gRoomControls.areaID;
|
gScreenTransition.player_status.area_next = gRoomControls.areaID;
|
||||||
gScreenTransition.player_status.room_next = 6;
|
gScreenTransition.player_status.room_next = 6;
|
||||||
gScreenTransition.player_status.start_anim = unk1 & 1 ? 4 : 0;
|
gScreenTransition.player_status.start_anim = unk1 & 1 ? 4 : 0;
|
||||||
gScreenTransition.player_status.start_pos.HALF.x = gUnk_081082E8[unk1 * 3];
|
gScreenTransition.player_status.start_pos_x = gUnk_081082E8[unk1 * 3];
|
||||||
gScreenTransition.player_status.start_pos.HALF.y = gUnk_081082E8[unk1 * 3 + 1];
|
gScreenTransition.player_status.start_pos_y = gUnk_081082E8[unk1 * 3 + 1];
|
||||||
gSave.unk7 = gUnk_081082E8[unk1 * 3 + 2];
|
gSave.unk7 = gUnk_081082E8[unk1 * 3 + 2];
|
||||||
SoundReq(SFX_STAIRS);
|
SoundReq(SFX_STAIRS);
|
||||||
}
|
}
|
||||||
|
|
|
@ -700,9 +700,6 @@ static void CreateWindow(void) {
|
||||||
ASM_FUNC("asm/non_matching/textbox/DispMessageFrame.inc",
|
ASM_FUNC("asm/non_matching/textbox/DispMessageFrame.inc",
|
||||||
void DispMessageFrame(u16* buffer, u32 width_, u32 height_, u32 flags_))
|
void DispMessageFrame(u16* buffer, u32 width_, u32 height_, u32 flags_))
|
||||||
|
|
||||||
extern u16 gUnk_02034CB2[];
|
|
||||||
extern u16 gUnk_0202281E[];
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Each character is two tiles tall.
|
Each character is two tiles tall.
|
||||||
They are stored in VRAM in the following order:
|
They are stored in VRAM in the following order:
|
||||||
|
|
|
@ -7,8 +7,6 @@
|
||||||
extern void sub_08057044(u32, struct_020227E8*, u32);
|
extern void sub_08057044(u32, struct_020227E8*, u32);
|
||||||
extern u32 gUnk_081146B8;
|
extern u32 gUnk_081146B8;
|
||||||
|
|
||||||
extern u16 gBG0Settings[];
|
|
||||||
|
|
||||||
void Phonograph(Entity* this) {
|
void Phonograph(Entity* this) {
|
||||||
if (this->action == 0) {
|
if (this->action == 0) {
|
||||||
this->action += 1;
|
this->action += 1;
|
||||||
|
|
|
@ -319,7 +319,7 @@ void sub_0808EBB8(Entity* this) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static Entity* sub_0808EC80(int form) {
|
static Entity* sub_0808EC80(int form) {
|
||||||
Entity* entityA = (Entity*)&gUnk_03003DA0;
|
Entity* entityA = (Entity*)&gEntityLists[6];
|
||||||
Entity* entityB = entityA->next;
|
Entity* entityB = entityA->next;
|
||||||
while (entityB != entityA) {
|
while (entityB != entityA) {
|
||||||
if ((entityB->kind == 0x6 && entityB->id == 0x48) && form == entityB->type) {
|
if ((entityB->kind == 0x6 && entityB->id == 0x48) && form == entityB->type) {
|
||||||
|
|
|
@ -7,18 +7,8 @@ extern u32 sub_08007DD6(u32, u32);
|
||||||
extern void sub_08017744(Entity*);
|
extern void sub_08017744(Entity*);
|
||||||
extern void sub_08091C0C(Entity*);
|
extern void sub_08091C0C(Entity*);
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
u16 field_0x0;
|
|
||||||
u16 field_0x2;
|
|
||||||
u8 field_0x4;
|
|
||||||
u8 field_0x5;
|
|
||||||
u8 field_0x6;
|
|
||||||
u8 field_0x7;
|
|
||||||
} struct_030010EC;
|
|
||||||
|
|
||||||
extern void (*const gUnk_081223A8[])(Entity*);
|
extern void (*const gUnk_081223A8[])(Entity*);
|
||||||
|
|
||||||
extern struct_030010EC gUnk_030010EC[];
|
|
||||||
extern Hitbox gUnk_080FD310;
|
extern Hitbox gUnk_080FD310;
|
||||||
|
|
||||||
extern const s8 gUnk_081223C8[];
|
extern const s8 gUnk_081223C8[];
|
||||||
|
@ -30,7 +20,7 @@ void Minecart(Entity* this) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_080916EC(Entity* this) {
|
void sub_080916EC(Entity* this) {
|
||||||
struct_030010EC* unk = &gUnk_030010EC[this->actionDelay];
|
struct_030010EC* unk = &gScreenTransition.minecart_data[this->actionDelay];
|
||||||
|
|
||||||
*(struct_030010EC**)&this->cutsceneBeh.HWORD = unk;
|
*(struct_030010EC**)&this->cutsceneBeh.HWORD = unk;
|
||||||
if ((gRoomControls.roomID != unk->field_0x4) || (gPlayerState.flags & 0x1000) != 0) {
|
if ((gRoomControls.roomID != unk->field_0x4) || (gPlayerState.flags & 0x1000) != 0) {
|
||||||
|
|
|
@ -148,8 +148,8 @@ void sub_0808B684(Entity* this) {
|
||||||
gScreenTransition.transitionType = TRANSITION_DEFAULT;
|
gScreenTransition.transitionType = TRANSITION_DEFAULT;
|
||||||
gScreenTransition.player_status.area_next = this->field_0x7c.BYTES.byte0;
|
gScreenTransition.player_status.area_next = this->field_0x7c.BYTES.byte0;
|
||||||
gScreenTransition.player_status.room_next = this->field_0x7c.BYTES.byte1;
|
gScreenTransition.player_status.room_next = this->field_0x7c.BYTES.byte1;
|
||||||
gScreenTransition.player_status.start_pos.HALF.x = ((this->cutsceneBeh.HWORD & 0x3f) << 4) + 8;
|
gScreenTransition.player_status.start_pos_x = ((this->cutsceneBeh.HWORD & 0x3f) << 4) + 8;
|
||||||
gScreenTransition.player_status.start_pos.HALF.y = ((this->cutsceneBeh.HWORD & 0xfc0) >> 2) + 8;
|
gScreenTransition.player_status.start_pos_y = ((this->cutsceneBeh.HWORD & 0xfc0) >> 2) + 8;
|
||||||
gScreenTransition.player_status.layer = 0;
|
gScreenTransition.player_status.layer = 0;
|
||||||
gScreenTransition.player_status.start_anim = 4;
|
gScreenTransition.player_status.start_anim = 4;
|
||||||
gScreenTransition.player_status.spawn_type = 0;
|
gScreenTransition.player_status.spawn_type = 0;
|
||||||
|
|
|
@ -233,7 +233,7 @@ extern EntityData Entities_HouseInteriors1_Mayor_080D6210;
|
||||||
|
|
||||||
void sub_StateChange_HouseInteriors1_Mayor(void) {
|
void sub_StateChange_HouseInteriors1_Mayor(void) {
|
||||||
|
|
||||||
if ((u16)gScreenTransition.player_status.start_pos.HALF.y > 0x40)
|
if ((u16)gScreenTransition.player_status.start_pos_y > 0x40)
|
||||||
LoadRoomEntityList(&Entities_HouseInteriors1_Mayor_080D6210);
|
LoadRoomEntityList(&Entities_HouseInteriors1_Mayor_080D6210);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1049,7 +1049,7 @@ void sub_StateChange_RoyalValley_Main(void) {
|
||||||
SetTile(0x4072, 0xc47, 1);
|
SetTile(0x4072, 0xc47, 1);
|
||||||
|
|
||||||
if (CheckGlobalFlag(MAZE_CLEAR))
|
if (CheckGlobalFlag(MAZE_CLEAR))
|
||||||
if (gScreenTransition.player_status.start_pos.WORD == 0x2780078) // todo: wtf
|
if (gScreenTransition.player_status.start_pos_x == 0x78 && gScreenTransition.player_status.start_pos_y == 0x278)
|
||||||
SoundReq(SFX_SECRET);
|
SoundReq(SFX_SECRET);
|
||||||
|
|
||||||
ClearGlobalFlag(MAZE_CLEAR);
|
ClearGlobalFlag(MAZE_CLEAR);
|
||||||
|
|
|
@ -53,8 +53,8 @@ u8 sub_0807CA18() {
|
||||||
gSave.saved_status.start_anim = 0;
|
gSave.saved_status.start_anim = 0;
|
||||||
gSave.saved_status.spawn_type = 0;
|
gSave.saved_status.spawn_type = 0;
|
||||||
gSave.saved_status.layer = 1;
|
gSave.saved_status.layer = 1;
|
||||||
gSave.saved_status.start_pos.HALF.x = 0x90;
|
gSave.saved_status.start_pos_x = 0x90;
|
||||||
gSave.saved_status.start_pos.HALF.y = 0x38;
|
gSave.saved_status.start_pos_y = 0x38;
|
||||||
}
|
}
|
||||||
if (gSave.playerName[0] == '\0') {
|
if (gSave.playerName[0] == '\0') {
|
||||||
MemCopy(gUnk_0811E470, &gSave.playerName, FILENAME_LENGTH - 1);
|
MemCopy(gUnk_0811E470, &gSave.playerName, FILENAME_LENGTH - 1);
|
||||||
|
|
73
src/title.c
73
src/title.c
|
@ -6,6 +6,9 @@
|
||||||
#include "object.h"
|
#include "object.h"
|
||||||
#include "message.h"
|
#include "message.h"
|
||||||
#include "functions.h"
|
#include "functions.h"
|
||||||
|
#include "save.h"
|
||||||
|
#include "area.h"
|
||||||
|
#include "item.h"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
u8 filler0[0x4];
|
u8 filler0[0x4];
|
||||||
|
@ -52,6 +55,67 @@ static const u16 sLightRaysAlphaBlends[] = {
|
||||||
BLDALPHA_BLEND(5, 13), BLDALPHA_BLEND(6, 12), BLDALPHA_BLEND(7, 11), BLDALPHA_BLEND(8, 10),
|
BLDALPHA_BLEND(5, 13), BLDALPHA_BLEND(6, 12), BLDALPHA_BLEND(7, 11), BLDALPHA_BLEND(8, 10),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define FLAG_BYTE(bank, flag) (((bank) + (flag)) >> 3)
|
||||||
|
#define FLAG_X(flag) (1 << ((flag)&7))
|
||||||
|
|
||||||
|
#ifdef DEMO_JP
|
||||||
|
static const SaveFile gDemoSave = {
|
||||||
|
.unk_01 = 1,
|
||||||
|
.messageSpeed = 1,
|
||||||
|
.brightnessPref = 1,
|
||||||
|
.global_progress = 1,
|
||||||
|
.field_0x9 = { [23] = 0x1F },
|
||||||
|
.windcrests = 0x00013780,
|
||||||
|
.unk50 = 7,
|
||||||
|
.areaVisitFlags = { 0x0114C300 },
|
||||||
|
.playerName = "\x97\x7f\xdd",
|
||||||
|
.saved_status = {
|
||||||
|
.area_next = AREA_DEEPWOOD_SHRINE,
|
||||||
|
.room_next = 0xb,
|
||||||
|
.start_pos_x = 0xa8,
|
||||||
|
.start_pos_y = 0xc8,
|
||||||
|
.layer = 1,
|
||||||
|
.overworld_map_x = 0xd66,
|
||||||
|
.overworld_map_y = 0xae0,
|
||||||
|
},
|
||||||
|
.stats = {
|
||||||
|
.health = 40,
|
||||||
|
.maxHealth = 40,
|
||||||
|
.itemOnA = ITEM_SHIELD,
|
||||||
|
.itemOnB = ITEM_SMITH_SWORD,
|
||||||
|
.rupees = 5,
|
||||||
|
},
|
||||||
|
.fillerD0 = {
|
||||||
|
[34] = 5,
|
||||||
|
[37] = 4,
|
||||||
|
[47] = 6,
|
||||||
|
[51] = 0x40,
|
||||||
|
[56] = 0x40,
|
||||||
|
},
|
||||||
|
.flags = {
|
||||||
|
[FLAG_BYTE(FLAG_BANK_G, START)] = FLAG_X(START) | FLAG_X(EZERO_1ST) | FLAG_X(TABIDACHI),
|
||||||
|
[FLAG_BYTE(FLAG_BANK_G, OUTDOOR)] = FLAG_X(OUTDOOR),
|
||||||
|
[FLAG_BYTE(FLAG_BANK_G, ENTRANCE_0)] = FLAG_X(ENTRANCE_0),
|
||||||
|
[FLAG_BYTE(FLAG_BANK_1, MORI_00_KOBITO)] = FLAG_X(MORI_00_KOBITO) | FLAG_X(MORI_ENTRANCE_1ST),
|
||||||
|
[FLAG_BYTE(FLAG_BANK_1, SOUGEN_01_ZELDA)] = FLAG_X(SOUGEN_01_ZELDA),
|
||||||
|
[FLAG_BYTE(FLAG_BANK_1, SOUGEN_06_WAKAGI_1)] = FLAG_X(SOUGEN_06_WAKAGI_1) | FLAG_X(SOUGEN_06_WAKAGI_2) | FLAG_X(SOUGEN_06_WAKAGI_3),
|
||||||
|
[FLAG_BYTE(FLAG_BANK_1, SOUGEN_06_AKINDO)] = FLAG_X(SOUGEN_06_AKINDO),
|
||||||
|
[FLAG_BYTE(FLAG_BANK_1, CASTLE_04_MEZAME)] = FLAG_X(CASTLE_04_MEZAME),
|
||||||
|
[FLAG_BYTE(FLAG_BANK_1, MACHI_01_DEMO)] = FLAG_X(MACHI_01_DEMO),
|
||||||
|
[FLAG_BYTE(FLAG_BANK_2, MHOUSE15_OP1ST)] = FLAG_X(MHOUSE15_OP1ST),
|
||||||
|
[FLAG_BYTE(FLAG_BANK_2, M_PRIEST_TALK)] = FLAG_X(M_PRIEST_TALK) | FLAG_X(M_ELDER_TALK1ST) | FLAG_X(M_PRIEST_MOVE),
|
||||||
|
[FLAG_BYTE(FLAG_BANK_2, KOBITO_MORI_1ST)] = FLAG_X(KOBITO_MORI_1ST),
|
||||||
|
[FLAG_BYTE(FLAG_BANK_5, LV1_0B_WALK)] = FLAG_X(LV1_0B_WALK),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
static const u8 unk[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0,
|
||||||
|
0xc2, 0xd1, 0xc2, 0xd2, 0xc2, 0xd3, 0xc2, 0xd4, 0xc2, 0xd5, 0xc2, 0xd6, 0xc2,
|
||||||
|
0xd7, 0xc2, 0xd8, 0xc2, 0x00, 0xf0, 0x11, 0x90, 0x11, 0x90, 0x05, 0xd3, 0x49,
|
||||||
|
0xd3, 0x26, 0xd3, 0x65, 0xdf, 0x11, 0x90, 0x11, 0x90, 0x11, 0x90, 0x11, 0x90,
|
||||||
|
0x11, 0x90, 0x11, 0x90, 0x11, 0x90, 0x11, 0x90, 0x11, 0x90, 0x11, 0x90, 0x11,
|
||||||
|
0x90, 0x11, 0x90, 0x8a, 0xc2, 0x8b, 0xc2, 0x8c, 0xc2, 0x8d, 0xc2 };
|
||||||
|
#endif
|
||||||
|
|
||||||
static u32 AdvanceIntroSequence(u32 transition) {
|
static u32 AdvanceIntroSequence(u32 transition) {
|
||||||
gUnk_02032EC0.lastState = transition;
|
gUnk_02032EC0.lastState = transition;
|
||||||
gMain.funcIndex = 2;
|
gMain.funcIndex = 2;
|
||||||
|
@ -266,7 +330,7 @@ static void UpdateSwordBgAffineData(void) {
|
||||||
aff.scrY = DISPLAY_HEIGHT / 2 - 8;
|
aff.scrY = DISPLAY_HEIGHT / 2 - 8;
|
||||||
aff.alpha = 0;
|
aff.alpha = 0;
|
||||||
aff.sy = aff.sx = gIntroState.swordBgScaleRatio;
|
aff.sy = aff.sx = gIntroState.swordBgScaleRatio;
|
||||||
BgAffineSet(&aff, (struct BgAffineDstData*)&gBgControls, 1);
|
BgAffineSet(&aff, (struct BgAffineDstData*)&gScreen.controls, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void HandleJapaneseTitlescreenAnimationIntro(void) {
|
static void HandleJapaneseTitlescreenAnimationIntro(void) {
|
||||||
|
@ -361,15 +425,10 @@ static void HandleTitlescreenAnimationIntro(void) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DEMO_JP
|
|
||||||
extern u8 gUnk_02002A40;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void ExitTitlescreen(void) {
|
static void ExitTitlescreen(void) {
|
||||||
if (!gFadeControl.active) {
|
if (!gFadeControl.active) {
|
||||||
#ifdef DEMO_JP
|
#ifdef DEMO_JP
|
||||||
MemCopy(&sLightRaysAlphaBlends[8], &gUnk_02002A40, 0x4B4);
|
MemCopy(&gDemoSave, &gSave, sizeof(gSave));
|
||||||
InitScreen(SCREEN_GAMEPLAY);
|
InitScreen(SCREEN_GAMEPLAY);
|
||||||
#else
|
#else
|
||||||
InitScreen(SCREEN_CHOOSE_FILE);
|
InitScreen(SCREEN_CHOOSE_FILE);
|
||||||
|
|
Loading…
Reference in New Issue