asm notes

This commit is contained in:
theo3 2021-10-31 22:59:41 -07:00
parent 57eec4def4
commit 46d14fdc0c
21 changed files with 161 additions and 110 deletions

View File

@ -126,7 +126,7 @@ sub_08083F14: @ 0x08083F14
movs r2, #0x32 movs r2, #0x32
ldrsh r1, [r4, r2] ldrsh r1, [r4, r2]
movs r2, #2 movs r2, #2
bl sub_080577AC bl CreateMagicSparkles
ldrb r0, [r4, #0xe] ldrb r0, [r4, #0xe]
subs r0, #1 subs r0, #1
strb r0, [r4, #0xe] strb r0, [r4, #0xe]

View File

@ -1264,14 +1264,17 @@ _0800268C:
.byte 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00 .byte 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00
_0800269C: .4byte gUnk_0800232E _0800269C: .4byte gUnk_0800232E
_080026A0: .4byte gUnk_08002342 _080026A0: .4byte gUnk_08002342
gUnk_080026A4:: gUnk_080026A4::
.4byte gUnk_020000B0 @ normal entities
.4byte gUnk_03003D68 .4byte gUnk_020000B0 @ enemy target? (player)
.4byte gUnk_03003DB0 .4byte gUnk_03003D68 @ first linked list
.4byte gUnk_03005FBC .4byte gUnk_03003DB0 @ last linked list
.4byte gUnk_03005FBC @ entity table
@ managers
.4byte gUnk_020000B0 .4byte gUnk_020000B0
.4byte gUnk_03003DA8 .4byte gUnk_03003DA8
.4byte gHitboxCount .4byte gCollidableCount
.4byte gUnk_03005FBC .4byte gUnk_03005FBC
thumb_func_start sub_080026C4 thumb_func_start sub_080026C4

View File

@ -13,7 +13,7 @@ sub_08016B30: @ 0x08016B30
thumb_func_start sub_08016B34 thumb_func_start sub_08016B34
sub_08016B34: @ 0x08016B34 sub_08016B34: @ 0x08016B34
ldr r1, _08016B54 @ =0x03007FFC ldr r1, _08016B54 @ =0x03007FFC
ldr r0, _08016B58 @ =IntrMain ldr r0, _08016B58 @ =gIntrMain
str r0, [r1] str r0, [r1]
ldr r1, _08016B5C @ =0x04000004 ldr r1, _08016B5C @ =0x04000004
ldr r2, _08016B60 @ =0x00005028 ldr r2, _08016B60 @ =0x00005028
@ -29,7 +29,7 @@ sub_08016B34: @ 0x08016B34
bx lr bx lr
.align 2, 0 .align 2, 0
_08016B54: .4byte 0x03007FFC _08016B54: .4byte 0x03007FFC
_08016B58: .4byte IntrMain _08016B58: .4byte gIntrMain
_08016B5C: .4byte 0x04000004 _08016B5C: .4byte 0x04000004
_08016B60: .4byte 0x00005028 _08016B60: .4byte 0x00005028
_08016B64: .4byte 0x04000200 _08016B64: .4byte 0x04000200

View File

@ -660,8 +660,8 @@ _0801DD7C: .4byte gAreaRoomHeaders
_0801DD80: .4byte gArea _0801DD80: .4byte gArea
_0801DD84: .4byte 0x0000085C _0801DD84: .4byte 0x0000085C
thumb_func_start sub_0801DD88 thumb_func_start LoadDungeonMap
sub_0801DD88: @ 0x0801DD88 LoadDungeonMap: @ 0x0801DD88
push {lr} push {lr}
ldr r0, _0801DD98 @ =gUnk_0201AEE0 ldr r0, _0801DD98 @ =gUnk_0201AEE0
ldr r1, _0801DD9C @ =0x06006000 ldr r1, _0801DD9C @ =0x06006000

View File

@ -1230,7 +1230,7 @@ sub_080A5CFC: @ 0x080A5CFC
push {r4, lr} push {r4, lr}
adds r4, r0, #0 adds r4, r0, #0
bl sub_0801DDA0 bl sub_0801DDA0
bl sub_0801DD88 bl LoadDungeonMap
ldr r1, _080A5D18 @ =gUnk_02019EE0 ldr r1, _080A5D18 @ =gUnk_02019EE0
movs r2, #0x80 movs r2, #0x80
lsls r2, r2, #3 lsls r2, r2, #3

View File

@ -33,7 +33,7 @@ _080000F0:
sp_irq: .4byte gUnk_03007FA0 sp_irq: .4byte gUnk_03007FA0
sp_usr: .4byte gUnk_03007F00 sp_usr: .4byte gUnk_03007F00
INTR_VECTOR_BUF: .4byte 0x03007FFC INTR_VECTOR_BUF: .4byte 0x03007FFC
intr_main: .4byte IntrMain intr_main: .4byte gIntrMain
.ifdef EU .ifdef EU
unk_function: .4byte sub_08000118 unk_function: .4byte sub_08000118
.endif .endif

View File

@ -6,6 +6,10 @@
.text .text
.code 16 .code 16
.global RAMFUNCS_BASE
RAMFUNCS_BASE::
sub_080B197C:: @ 0x080B197C sub_080B197C:: @ 0x080B197C
push {r4, r5, r6} push {r4, r5, r6}
ldr r2, _080B19C0 @ =gRoomControls ldr r2, _080B19C0 @ =gRoomControls
@ -250,13 +254,14 @@ _080B1C48: .4byte gUnk_080B7A3E
_080B1C4C: .4byte gRoomControls _080B1C4C: .4byte gRoomControls
_080B1C50: .4byte gUnk_08000278 _080B1C50: .4byte gUnk_08000278
arm_func_start sub_080B1C54 arm_func_start UpdateCollision
sub_080B1C54: @ 0x080B1C54 UpdateCollision: @ 0x080B1C54
@ r0 : Entity* this
ldrb r1, [r0, #0x10] ldrb r1, [r0, #0x10]
ands r1, r1, #0x80 ands r1, r1, #0x80 @ disable collision flag
bxeq lr bxeq lr
ldr r2, _080B200C @ =gUnk_03000E10 ldr r2, _080B200C @ =gCollidableList
ldr r3, _080B2010 @ =gHitboxCount ldr r3, _080B2010 @ =gCollidableCount
ldrb r1, [r3] ldrb r1, [r3]
str r0, [r2, r1, lsl #2] str r0, [r2, r1, lsl #2]
add r1, r1, #1 add r1, r1, #1
@ -340,8 +345,8 @@ _080B1D84:
pop {r4, r5, r6, r7, r8, sb, sl, lr} pop {r4, r5, r6, r7, r8, sb, sl, lr}
bx lr bx lr
_080B1D8C: .4byte gUnk_02018EA0 _080B1D8C: .4byte gUnk_02018EA0
_080B1D90: .4byte gUnk_03000E10 _080B1D90: .4byte gCollidableList
_080B1D94: .4byte gHitboxCount _080B1D94: .4byte gCollidableCount
arm_func_start sub_080B1D98 arm_func_start sub_080B1D98
sub_080B1D98: @ 0x080B1D98 sub_080B1D98: @ 0x080B1D98
@ -525,33 +530,33 @@ _080B1FFC: .4byte gUnk_03005D5C
_080B2000: .4byte gUnk_03005D24 _080B2000: .4byte gUnk_03005D24
_080B2004: .4byte gUnk_03005D18 _080B2004: .4byte gUnk_03005D18
_080B2008: .4byte gUnk_03005D58 _080B2008: .4byte gUnk_03005D58
_080B200C: .4byte gUnk_03000E10 _080B200C: .4byte gCollidableList
_080B2010: .4byte gHitboxCount _080B2010: .4byte gCollidableCount
_080B2014: .4byte gUnk_080B7B74 _080B2014: .4byte gUnk_080B7B74
_080B2018: .4byte gUnk_080B3744 _080B2018: .4byte gUnk_080B3744
arm_func_start sub_080B201C arm_func_start IntrMain
sub_080B201C: @ 0x080B201C IntrMain:
mov r3, #0x4000000 mov r3, #0x4000000
add r3, r3, #0x200 add r3, r3, #0x200
ldr r2, [r3] ldr r2, [r3] @ lo 16: interrupt_enable, hi 16: interrupt_request
ldrh r1, [r3, #8] ldrh r1, [r3, #8] @ interrupt master enable
mrs r0, spsr mrs r0, spsr
push {r0, r1, r2, r3, lr} push {r0, r1, r2, r3, lr}
and r1, r2, r2, lsr #16 and r1, r2, r2, lsr #16
ands r0, r1, #0x2000 ands r0, r1, #0x2000 @ external irq
bne _080B20D4 bne _080B20D4
mov ip, #4 mov ip, #4
ands r0, r1, #0x80 ands r0, r1, #0x80 @ serial comm
bne _080B2074 bne _080B2074
mov ip, #0xc mov ip, #0xc
ands r0, r1, #4 ands r0, r1, #4 @ vcount
bne _080B2074 bne _080B2074
mov ip, #0x10 mov ip, #0x10
ands r0, r1, #1 ands r0, r1, #1 @ vblank
bne _080B2074 bne _080B2074
mov ip, #0x14 mov ip, #0x14
ands r0, r1, #0x40 ands r0, r1, #0x40 @ timer 3 overflow
bne _080B2074 bne _080B2074
mov ip, #0 mov ip, #0
_080B2074: _080B2074:
@ -610,8 +615,8 @@ _080B20FC:
mov r0, #1 mov r0, #1
bx lr bx lr
arm_func_start sub_080B2124 arm_func_start MakeFadeBuff256
sub_080B2124: @ 0x080B2124 MakeFadeBuff256: @ 0x080B2124
push {r4, r5, r6, r7, r8, sb, sl, fp} push {r4, r5, r6, r7, r8, sb, sl, fp}
mul r3, r2, r3 mul r3, r2, r3
mov r4, #0x400 mov r4, #0x400
@ -652,50 +657,60 @@ _080B21AC: .4byte gUnk_08000F54
arm_func_start UpdateEntities arm_func_start UpdateEntities
UpdateEntities: @ 0x080B21B0 UpdateEntities: @ 0x080B21B0
ldr fp, _080B2270 @ =gUnk_03003DD0 ldr r11, _080B2270 @ =gUnk_03003DD0
ldr r1, [fp] ldr r1, [r11]
ldm r1, {r7, r8, sb, sl} ldm r1, {r7, r8, r9, r10}
ldr sp, [fp, #0xc] ldr sp, [r11, #0xc]
ldr r8, [fp, #4] ldr r8, [r11, #4]
ldr r0, [fp, #8] ldr r0, [r11, #8]
add pc, pc, #0x60 @ =_080B2230 add pc, pc, #0x60 @ =_080B2230
@ gUnk_03003DD0 {
@ void* chosen_table;
@ void* linked_list_top;
@ void* curr_entity;
@ void* restore_sp;
@ }
@ UpdateEntities starts here @ UpdateEntities starts here
@ arg0 (r0) : 0 = entities, 1 = managers
ldr r1, _080B2274 @ =gUnk_080026A4 ldr r1, _080B2274 @ =gUnk_080026A4
add r1, r1, r0, lsl #4 add r1, r1, r0, lsl #4
push {r4, r5, r6, r7, r8, sb, sl, fp, lr} push {r4 - r11, lr}
ldr fp, _080B2278 @ =gUnk_03003DD0 ldr r11, _080B2278 @ =gUnk_03003DD0
str r1, [fp] str r1, [r11, #0x0]
str sp, [fp, #0xc] str sp, [r11, #0xc]
ldm r1, {r7, r8, sb, sl} ldm r1, {r7, r8, r9, r10}
_080B21E8: next_list: @ traverse entity linked list
add r8, r8, #8 add r8, r8, #8
str r8, [fp, #4] str r8, [r11, #4]
cmp r8, sb cmp r8, r9
bhs _080B2238 bhs lists_complete
ldr r4, [r8, #4] ldr r4, [r8, #4] @ entity -> next
_080B21FC: next_entity:
cmp r4, r8 cmp r4, r8
beq _080B21E8 beq next_list
mov r0, #0 mov r0, #0
str r0, [r7] str r0, [r7]
str r4, [fp, #8] str r4, [r11, #8]
ldrb r1, [r4, #8] ldrb r1, [r4, #8] @ entity -> kind
ldr r1, [sl, r1, lsl #2] ldr r1, [r10, r1, lsl #2]
mov r0, r4 mov r0, r4
mov lr, pc mov lr, pc
bx r1 @ Jump to address stored in r1 bx r1 @ call entity kind update function
_080B2224: ldr r0, [r11, #8]
ldr r0, [fp, #8] cmp r0, r4 @ update collision if entity is still alive
cmp r0, r4 bleq UpdateCollision
bleq sub_080B1C54
_080B2230: @ jumped here if ClearAndUpdateEntities _080B2230: @ jumped here if ClearAndUpdateEntities
ldr r4, [r0, #4] ldr r4, [r0, #4]
b _080B21FC b next_entity
_080B2238: lists_complete:
mov r0, #0 mov r0, #0
str r0, [fp, #8] str r0, [r11, #8]
pop {r4, r5, r6, r7, r8, sb, sl, fp, lr} pop {r4 - r11, lr}
bx lr bx lr
_080B2248::
_080B2248: .4byte DeleteThisEntity @ 0x3005fbc _080B2248: .4byte DeleteThisEntity @ 0x3005fbc
_080B224C: .4byte PlayerUpdate _080B224C: .4byte PlayerUpdate
_080B2250: .4byte DeleteThisEntity _080B2250: .4byte DeleteThisEntity
@ -706,6 +721,7 @@ _080B2260: .4byte ObjectUpdate
_080B2264: .4byte NPCUpdate _080B2264: .4byte NPCUpdate
_080B2268: .4byte ItemUpdate _080B2268: .4byte ItemUpdate
_080B226C: .4byte ManagerUpdate _080B226C: .4byte ManagerUpdate
_080B2270: .4byte gUnk_03003DD0 _080B2270: .4byte gUnk_03003DD0
_080B2274: .4byte gUnk_080026A4 _080B2274: .4byte gUnk_080026A4
_080B2278: .4byte gUnk_03003DD0 _080B2278: .4byte gUnk_03003DD0
@ -860,7 +876,7 @@ sub_080B19C8: @ 0x080B19C8
mov r2, #0 mov r2, #0
strb r2, [r1] strb r2, [r1]
stmdb sp!, {lr} stmdb sp!, {lr}
bl sub_080B2478 bl ResolveOamDrawPriority
bl sub_080B2534 bl sub_080B2534
ldm sp!, {lr} ldm sp!, {lr}
b _080B1C40EU b _080B1C40EU
@ -899,14 +915,17 @@ sub_080B2448: @ 0x080B2448
mov r2, #0 mov r2, #0
strb r2, [r1] strb r2, [r1]
stmdb sp!, {lr} stmdb sp!, {lr}
bl sub_080B2478 bl ResolveOamDrawPriority
bl sub_080B2534 bl sub_080B2534
ldm sp!, {lr} ldm sp!, {lr}
b _080B26B4 b _080B26B4
.endif .endif
arm_func_start sub_080B2478 arm_func_start ResolveOamDrawPriority
sub_080B2478: @ 0x080B2478 ResolveOamDrawPriority: @ 0x080B2478
prio_a .req r8
prio_b .req r5
mov sb, r0 mov sb, r0
mov r1, r0 mov r1, r0
ldrb r2, [r1], #4 ldrb r2, [r1], #4
@ -914,7 +933,7 @@ sub_080B2478: @ 0x080B2478
sub sl, r2, #1 sub sl, r2, #1
add r2, r1, sl, lsl #2 add r2, r1, sl, lsl #2
cmp sl, #0 cmp sl, #0
beq _080B252C beq no_objs
_080B2498: _080B2498:
lsl r3, sl, #2 lsl r3, sl, #2
mov r6, #0 mov r6, #0
@ -926,40 +945,44 @@ _080B24A0:
_080B24B0: _080B24B0:
cmp r1, ip cmp r1, ip
blo _080B251C blo _080B251C
# sprite A
ldr r4, [r1] ldr r4, [r1]
# pos
ldr r8, [r4, #0x30] ldr r8, [r4, #0x30]
add r8, r8, #-0x80000000 add r8, #0x80000000
lsr r8, r8, #3 lsr r8, #3
# load priority bits, NOT so 0 = highest priority
ldrb r0, [r4, #0x29] ldrb r0, [r4, #0x29]
mvn r0, r0 mvn r0, r0
orr r8, r8, r0, lsl #29 orr prio_a, r8, r0, lsl #29
add r7, r1, r3 add r7, r1, r3
_080B24D8: next_sprite:
cmp r2, r7 cmp r2, r7
blo _080B2510 blo a_priority
# sprite B
ldr r5, [r7] ldr r5, [r7]
ldr r0, [r5, #0x30] ldr r0, [r5, #0x30]
add r0, r0, #-0x80000000 add r0, #0x80000000
lsr r0, r0, #3 lsr r0, #3
ldrb r5, [r5, #0x29] ldrb r5, [r5, #0x29]
mvn r5, r5 mvn r5, r5
orr r5, r0, r5, lsl #29 orr prio_b, r0, r5, lsl #29
cmp r8, r5 cmp prio_a, prio_b
bhs _080B2510 bhs a_priority
ldr r5, [r7], -r3 ldr r5, [r7], -r3
str r5, [r7], r3, lsl #1 str r5, [r7], r3, lsl #1
b _080B24D8 b next_sprite
_080B2510: a_priority:
str r4, [r7, -r3]! str r4, [r7, -r3]!
sub r1, r1, r3 sub r1, r1, r3
b _080B24B0 b _080B24B0
_080B251C: _080B251C:
add r6, r6, #1 add r6, #1
b _080B24A0 b _080B24A0
_080B2524: _080B2524:
lsrs sl, sl, #1 lsrs sl, #1
bne _080B2498 bne _080B2498
_080B252C: no_objs:
mov r0, sb mov r0, sb
bx lr bx lr

View File

@ -1,5 +1,7 @@
.include "asm/macros/asm.inc" .include "asm/macros/asm.inc"
.include "asm/macros/function.inc" .include "asm/macros/function.inc"
.include "asm/macros/ram.inc"
.include "asm/macros/m4a.inc" .include "asm/macros/m4a.inc"
.include "asm/macros/map.inc" .include "asm/macros/map.inc"
.include "asm/macros/entity.inc" .include "asm/macros/entity.inc"

20
asm/macros/ram.inc Normal file
View File

@ -0,0 +1,20 @@
.ifndef GUARD_ASM_MACROS_RAM_INC
.set GUARD_ASM_MACROS_RAM_INC, 1
.ifdef EU
.set RAM_DIFF, 0x050AC28C - 0xaa0
.endif
.ifdef USA
.set RAM_DIFF, 0x050AC28C
.endif
.ifdef JP
.set RAM_DIFF, 0x050AC28C - 0x260
.endif
.macro ram_addr x
.4byte \x - RAM_DIFF
.endm
.endif @ GUARD_ASM_MACROS_RAM_INC

View File

@ -118,7 +118,7 @@ sub_08097C20: @ 0x08097C20
adds r2, r4, #0 adds r2, r4, #0
adds r2, #0x38 adds r2, #0x38
ldrb r2, [r2] ldrb r2, [r2]
bl sub_080577AC bl CreateMagicSparkles
ldrb r0, [r4, #0xe] ldrb r0, [r4, #0xe]
subs r0, #1 subs r0, #1
strb r0, [r4, #0xe] strb r0, [r4, #0xe]

View File

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
buildname=tmc buildname=$3
baserom=baserom baserom=$4
OBJDUMP="$DEVKITARM/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb" OBJDUMP="$DEVKITARM/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb"
OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))" OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))"

View File

@ -336,7 +336,7 @@
.equiv SFX_14F, 0x14f .equiv SFX_14F, 0x14f
.equiv SFX_150, 0x150 .equiv SFX_150, 0x150
.equiv SFX_151, 0x151 .equiv SFX_151, 0x151
.equiv SFX_152, 0x152 .equiv SFX_NEAR_PORTAL, 0x152
.equiv SFX_153, 0x153 .equiv SFX_153, 0x153
.equiv SFX_154, 0x154 .equiv SFX_154, 0x154
.equiv SFX_155, 0x155 .equiv SFX_155, 0x155

View File

@ -8591,12 +8591,12 @@ sfx151_track0:: @ 08DE3684
sfx151:: @ 08DE36B0 sfx151:: @ 08DE36B0
sound_header 1 0 0x60 0 gUnk_08A10DC0 sfx151_track0 sound_header 1 0 0x60 0 gUnk_08A10DC0 sfx151_track0
sfx152_track0:: @ 08DE36BC sfxNearPortal_track0:: @ 08DE36BC
.incbin "baserom.gba", 0xDE36BC, 0x0000086 .incbin "baserom.gba", 0xDE36BC, 0x0000086
sfx152_track1:: @ 08DE3742 sfxNearPortal_track1:: @ 08DE3742
.incbin "baserom.gba", 0xDE3742, 0x000008A .incbin "baserom.gba", 0xDE3742, 0x000008A
sfx152:: @ 08DE37CC sfxNearPortal:: @ 08DE37CC
sound_header 2 0 0x40 0 gUnk_08A10DD8 sfx152_track0 sfx152_track1 sound_header 2 0 0x40 0 gUnk_08A10DD8 sfxNearPortal_track0 sfxNearPortal_track1
sfx153_track0:: @ 08DE37DC sfx153_track0:: @ 08DE37DC
.incbin "baserom.gba", 0xDE37DC, 0x0000030 .incbin "baserom.gba", 0xDE37DC, 0x0000030

View File

@ -346,7 +346,7 @@ typedef enum {
SFX_14F, SFX_14F,
SFX_150, SFX_150,
SFX_151, SFX_151,
SFX_152, SFX_NEAR_PORTAL,
SFX_153, SFX_153,
SFX_154, SFX_154,
SFX_155, SFX_155,

View File

@ -24,7 +24,9 @@ typedef struct {
/*0x0E*/ u8 unk5; /*0x0E*/ u8 unk5;
/*0x0F*/ u8 unk6; /*0x0F*/ u8 unk6;
/*0x10*/ u8 unk_10; /*0x10*/ u8 unk_10;
/*0x11*/ u8 filler[3]; /*0x11*/ s8 oam_offset_x;
/*0x12*/ s8 oam_offset_y;
/*0x13*/ u8 unk13;
/*0x14*/ u8 screenShakeMagnitude; /*0x14*/ u8 screenShakeMagnitude;
/*0x15*/ u8 unk7; /*0x15*/ u8 unk7;
/*0x16*/ u16 screenShakeTime; /*0x16*/ u16 screenShakeTime;

View File

@ -181,7 +181,7 @@ SECTIONS {
. = 0x00000BF8; gUnk_03000BF8 = .; . = 0x00000BF8; gUnk_03000BF8 = .;
. = 0x00000C24; gUnk_03000C24 = .; . = 0x00000C24; gUnk_03000C24 = .;
. = 0x00000C30; gUnk_03000C30 = .; . = 0x00000C30; gUnk_03000C30 = .;
. = 0x00000E10; gUnk_03000E10 = .; . = 0x00000E10; gCollidableList = .;
. = 0x00000F50; gScreen = .; . = 0x00000F50; gScreen = .;
. = 0x00000F58; gBG0Settings = .; . = 0x00000F58; gBG0Settings = .;
. = 0x00000F64; gBG1Settings = .; . = 0x00000F64; gBG1Settings = .;
@ -212,7 +212,7 @@ SECTIONS {
. = 0x00003DA0; gUnk_03003DA0 = .; . = 0x00003DA0; gUnk_03003DA0 = .;
. = 0x00003DA8; gUnk_03003DA8 = .; . = 0x00003DA8; gUnk_03003DA8 = .;
. = 0x00003DB0; gUnk_03003DB0 = .; . = 0x00003DB0; gUnk_03003DB0 = .;
. = 0x00003DB8; gHitboxCount = .; . = 0x00003DB8; gCollidableCount = .;
. = 0x00003DBC; gEntCount = .; . = 0x00003DBC; gEntCount = .;
. = 0x00003DC0; gUnk_03003DC0 = .; . = 0x00003DC0; gUnk_03003DC0 = .;
. = 0x00003DD0; gUnk_03003DD0 = .; . = 0x00003DD0; gUnk_03003DD0 = .;
@ -274,7 +274,7 @@ SECTIONS {
. = 0x00005D24; gUnk_03005D24 = .; . = 0x00005D24; gUnk_03005D24 = .;
. = 0x00005D58; gUnk_03005D58 = .; . = 0x00005D58; gUnk_03005D58 = .;
. = 0x00005D5C; gUnk_03005D5C = .; . = 0x00005D5C; gUnk_03005D5C = .;
. = 0x00005D90; IntrMain = .; . = 0x00005D90; gIntrMain = .;
. = 0x00005E60; gUnk_03005E60 = .; . = 0x00005E60; gUnk_03005E60 = .;
. = 0x00005E98; gUnk_03005E98 = .; . = 0x00005E98; gUnk_03005E98 = .;
. = 0x00005F24; _ClearAndUpdateEntities = .; . = 0x00005F24; _ClearAndUpdateEntities = .;

View File

@ -22,7 +22,7 @@ extern u8 gUnk_03003DF0[];
extern u8 gUnk_03003BE0; extern u8 gUnk_03003BE0;
extern Entity* gUnk_03004040[3]; extern Entity* gUnk_03004040[3];
extern u8 gUnk_020342F8; extern u8 gUnk_020342F8;
extern u8 gHitboxCount; extern u8 gCollidableCount;
extern void gDoCollision(void); extern void gDoCollision(void);
extern void sub_080ADD70(); extern void sub_080ADD70();
@ -371,7 +371,7 @@ NONMATCH("asm/non_matching/arm_proxy/NPCUpdate.inc", void NPCUpdate(Entity* this
END_NONMATCH END_NONMATCH
void ClearHitboxList(void) { void ClearHitboxList(void) {
gHitboxCount = 0; gCollidableCount = 0;
} }
void CollisionMain(void) { void CollisionMain(void) {

View File

@ -533,7 +533,7 @@ extern const SongHeader sfx14E;
extern const SongHeader sfx14F; extern const SongHeader sfx14F;
extern const SongHeader sfx150; extern const SongHeader sfx150;
extern const SongHeader sfx151; extern const SongHeader sfx151;
extern const SongHeader sfx152; extern const SongHeader sfxNearPortal;
extern const SongHeader sfx153; extern const SongHeader sfx153;
extern const SongHeader sfx154; extern const SongHeader sfx154;
extern const SongHeader sfx155; extern const SongHeader sfx155;
@ -1165,7 +1165,7 @@ const Song gSongTable[] = {
[SFX_14F] = { &sfx14F, MUSIC_PLAYER_15, MUSIC_PLAYER_15 }, [SFX_14F] = { &sfx14F, MUSIC_PLAYER_15, MUSIC_PLAYER_15 },
[SFX_150] = { &sfx150, MUSIC_PLAYER_14, MUSIC_PLAYER_14 }, [SFX_150] = { &sfx150, MUSIC_PLAYER_14, MUSIC_PLAYER_14 },
[SFX_151] = { &sfx151, MUSIC_PLAYER_13, MUSIC_PLAYER_13 }, [SFX_151] = { &sfx151, MUSIC_PLAYER_13, MUSIC_PLAYER_13 },
[SFX_152] = { &sfx152, MUSIC_PLAYER_18, MUSIC_PLAYER_18 }, [SFX_NEAR_PORTAL] = { &sfxNearPortal, MUSIC_PLAYER_18, MUSIC_PLAYER_18 },
[SFX_153] = { &sfx153, MUSIC_PLAYER_11, MUSIC_PLAYER_11 }, [SFX_153] = { &sfx153, MUSIC_PLAYER_11, MUSIC_PLAYER_11 },
[SFX_154] = { &sfx154, MUSIC_PLAYER_10, MUSIC_PLAYER_10 }, [SFX_154] = { &sfx154, MUSIC_PLAYER_10, MUSIC_PLAYER_10 },
[SFX_155] = { &sfx155, MUSIC_PLAYER_0F, MUSIC_PLAYER_0F }, [SFX_155] = { &sfx155, MUSIC_PLAYER_0F, MUSIC_PLAYER_0F },

View File

@ -10,7 +10,8 @@ typedef struct {
} VStruct; } VStruct;
typedef struct { typedef struct {
u8 filler[0x420]; u8 _0[0x20];
struct OamData oam[0x80];
VStruct unk[0x100]; VStruct unk[0x100];
} UStruct; } UStruct;

View File

@ -28,7 +28,7 @@ typedef struct {
extern s8 gUnk_08107C6C[]; extern s8 gUnk_08107C6C[];
extern u32 sub_08057810(void); extern u32 sub_08057810(void);
extern u32 sub_080002C0(u16, u16, u8); extern u32 sub_080002C0(u16, u16, u8);
extern void sub_080577AC(u32, u32, u32); extern void CreateMagicSparkles(u32, u32, u32);
void Manager3_Main(Manager3* this) { void Manager3_Main(Manager3* this) {
s8 tmp; s8 tmp;
@ -55,11 +55,11 @@ void Manager3_Main(Manager3* this) {
} }
} }
if (sub_080002C0(this->unk_38, this->unk_3a, this->manager.unk_0e) == 0x3d) { if (sub_080002C0(this->unk_38, this->unk_3a, this->manager.unk_0e) == 0x3d) {
sub_080577AC(this->unk_38 + gRoomControls.roomOriginX, this->unk_3a + gRoomControls.roomOriginY, CreateMagicSparkles(this->unk_38 + gRoomControls.roomOriginX, this->unk_3a + gRoomControls.roomOriginY,
this->manager.unk_0e); this->manager.unk_0e);
if (!this->manager.unk_0f) { if (!this->manager.unk_0f) {
this->manager.unk_0f = 1; this->manager.unk_0f = 1;
SoundReq(SFX_152); SoundReq(SFX_NEAR_PORTAL);
} }
} }
} }
@ -69,15 +69,15 @@ void Manager3_Main(Manager3* this) {
} }
} }
void sub_080577AC(u32 baseX, u32 baseY, u32 layer) { void CreateMagicSparkles(u32 baseX, u32 baseY, u32 layer) {
u32 r; u32 r;
int offsetX, offsetY; int offsetX, offsetY;
Entity* spark; Entity* spark;
r = Random(); r = Random();
if ((r & 0x7) != 0) if (r & 0x7)
return; return;
spark = CreateObject(SPECIAL_FX, 0x26, 0); spark = CreateObject(SPECIAL_FX, 0x26, 0);
if (!spark) if (spark == NULL)
return; return;
offsetX = (r >> 0x8) & 0xF; offsetX = (r >> 0x8) & 0xF;
offsetY = ((r >> 0x10) & 0xF); offsetY = ((r >> 0x10) & 0xF);

View File

@ -8,7 +8,7 @@
extern void (*gUnk_08121488[])(Entity*); extern void (*gUnk_08121488[])(Entity*);
extern u32 sub_08057810(void); extern u32 sub_08057810(void);
extern void sub_080577AC(u32, u32, u32); extern void CreateMagicSparkles(u32, u32, u32);
u32 sub_0808C128(Entity*); u32 sub_0808C128(Entity*);
void sub_0808C13C(Entity*); void sub_0808C13C(Entity*);
@ -118,10 +118,10 @@ void sub_0808C01C(Entity* this, u32 r1) {
gArea.field_0x18 = 3; gArea.field_0x18 = 3;
} }
} }
sub_080577AC(this->x.HALF.HI, this->y.HALF.HI, this->collisionLayer); CreateMagicSparkles(this->x.HALF.HI, this->y.HALF.HI, this->collisionLayer);
if (this->field_0xf == 0) { if (this->field_0xf == 0) {
this->field_0xf = 1; this->field_0xf = 1;
SoundReq(0x152); SoundReq(SFX_NEAR_PORTAL);
} }
} }
} }