mirror of https://github.com/zeldaret/tmc.git
asm notes
This commit is contained in:
parent
57eec4def4
commit
46d14fdc0c
|
@ -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]
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
163
asm/intr.s
163
asm/intr.s
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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"
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
@ -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]
|
||||||
|
|
|
@ -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))"
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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 = .;
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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 },
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue