Merge pull request #232 from notyourav/save_ld

strip fake linker symbols
This commit is contained in:
notyourav 2021-12-29 03:13:06 -08:00 committed by GitHub
commit 0e72c3ee15
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
47 changed files with 172 additions and 186 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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]

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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,

View File

@ -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

View File

@ -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);

View File

@ -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;

View File

@ -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];

View File

@ -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;

View File

@ -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);

View File

@ -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];

View File

@ -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));
} }
} }

View File

@ -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);

View File

@ -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);
} }

View File

@ -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;

View File

@ -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();

View File

@ -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;
} }

View File

@ -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);
} }
} }

View File

@ -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;

View File

@ -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;
} }
} }

View File

@ -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) &&

View File

@ -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) {

View File

@ -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);
} }

View File

@ -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:

View File

@ -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;

View File

@ -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) {

View File

@ -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) {

View File

@ -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;

View File

@ -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);

View File

@ -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);

View File

@ -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);