Merge pull request #5 from ethteck/overlay-hopeful

Added big overlay! :)
This commit is contained in:
Ethan Roseman 2020-06-24 16:09:22 -04:00 committed by GitHub
commit 44ae3c8071
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 75697 additions and 454 deletions

View File

@ -209,7 +209,9 @@ ranges:
- [0x109660, 0x10A9F0, "asm", "code_109660_len_1270", 0x802E7DE0]
- [0x10A9F0, 0x163400, "bin", "bin_10A9F0"]
- [0x163400, 0x16a3e0, "asm", "code_163400", 0x80242BA0]
- [0x16a3e0, 0x3169f0, "bin", "bin_16a3e0"]
- [0x16a3e0, 0x16C8E0, "bin", "bin_16a3e0"]
- [0x16C8E0, 0x1AF2C0, "asm", "code_16c8e0", 0x8023E000]
- [0x1AF2C0, 0x3169f0, "bin", "bin_1AF2C0"]
- [0x3169f0, 0x316a70, "asm", "code_3169f0", 0x80200000]
- [0x316a70, 0x316c00, "asm", "code_316a70", 0x80200080]
- [0x316c00, 0x316d90, "bin", "bin_316c00"]

View File

@ -56,7 +56,7 @@ OBJCOPY = $(CROSS)objcopy
ASFLAGS = -EB -march=vr4300 -mtune=vr4300
CFLAGS = -O2 -quiet
LDFLAGS = -T undefined_syms.txt -T $(LD_SCRIPT) -Map $(BUILD_DIR)/papermario.map
LDFLAGS = -T undefined_syms.txt -T $(LD_SCRIPT) -Map $(BUILD_DIR)/papermario.map --no-check-sections
######################## Targets #############################

View File

@ -1002,11 +1002,21 @@ SECTIONS
build/asm/code_163400.o(.text80242BA0);
}
/* 0x00000000 16A3E0-3169F0 [1AC610] */
/* 0x00000000 16A3E0-16C8E0 [??] */
.data0016A3E0 0x0016A3E0 : AT(0x16A3E0) {
build/bin/PAPERMARIO.16A3E0.bin_16a3e0.o(.data);
}
/* 0x8023E000 16C8E0-1AF2C0 [??] */
.text8023E000 0x8023E000 : AT(0x16C8E0) {
build/asm/code_16c8e0.o(.text8023E000);
}
/* 0x00000000 1AF2C0-3169F0 [??] */
.data001AF2C0 0x001AF2C0 : AT(0x1AF2C0) {
build/bin/PAPERMARIO.1AF2C0.bin_1AF2C0.o(.data);
}
/* 0x80200000 3169F0-316A70 [80] */
.text80200000 0x80200000 : AT(0x3169F0) {
build/asm/code_3169f0.o(.text80200000);

View File

@ -16,7 +16,6 @@ func_80242BA0:
/* 163404 80242BA4 8FA90014 */ lw $t1, 0x14($sp)
/* 163408 80242BA8 8FAA0018 */ lw $t2, 0x18($sp)
/* 16340C 80242BAC 8FAB001C */ lw $t3, 0x1c($sp)
update_partner_change_turn:
/* 163410 80242BB0 8FAC0020 */ lw $t4, 0x20($sp)
/* 163414 80242BB4 14400075 */ bnez $v0, .L80242D8C
/* 163418 80242BB8 28A2F581 */ slti $v0, $a1, -0xa7f
@ -261,7 +260,6 @@ func_80242E00:
/* 163754 80242EF4 3C018025 */ lui $at, 0x8025
/* 163758 80242EF8 AC339BA4 */ sw $s3, -0x645c($at)
/* 16375C 80242EFC 3C018025 */ lui $at, 0x8025
switch_to_partner:
/* 163760 80242F00 08090BD2 */ j .L80242F48
/* 163764 80242F04 AC339B98 */ sw $s3, -0x6468($at)
@ -995,7 +993,6 @@ func_802431A0:
/* 16416C 8024390C 3C028016 */ lui $v0, 0x8016
/* 164170 80243910 24429D50 */ addiu $v0, $v0, -0x62b0
/* 164174 80243914 00042140 */ sll $a0, $a0, 5
switch_order:
/* 164178 80243918 00824021 */ addu $t0, $a0, $v0
/* 16417C 8024391C 81050003 */ lb $a1, 3($t0)
/* 164180 80243920 9106001C */ lbu $a2, 0x1c($t0)
@ -1935,7 +1932,6 @@ func_80244424:
/* 164F5C 802446FC 00731821 */ addu $v1, $v1, $s3
/* 164F60 80244700 24A50001 */ addiu $a1, $a1, 1
/* 164F64 80244704 AC950000 */ sw $s5, ($a0)
func_80244708:
/* 164F68 80244708 8E820000 */ lw $v0, ($s4)
/* 164F6C 8024470C 8FC90000 */ lw $t1, ($fp)
/* 164F70 80244710 00431021 */ addu $v0, $v0, $v1
@ -2160,7 +2156,6 @@ func_802448E0:
/* 1652A4 80244A44 82620004 */ lb $v0, 4($s3)
/* 1652A8 80244A48 1440000E */ bnez $v0, .L80244A84
/* 1652AC 80244A4C 0260202D */ daddu $a0, $s3, $zero
end_battle:
/* 1652B0 80244A50 0C00ABF6 */ jal fio_has_valid_backup
/* 1652B4 80244A54 00000000 */ nop
/* 1652B8 80244A58 3C04800E */ lui $a0, 0x800e
@ -2498,7 +2493,6 @@ func_80244BC4:
.L80244EF8:
/* 165758 80244EF8 0C0926A9 */ jal func_80249AA4
/* 16575C 80244EFC 0240202D */ daddu $a0, $s2, $zero
update_run_away:
/* 165760 80244F00 0040202D */ daddu $a0, $v0, $zero
/* 165764 80244F04 02142821 */ addu $a1, $s0, $s4
/* 165768 80244F08 02333021 */ addu $a2, $s1, $s3
@ -3022,7 +3016,6 @@ func_8024544C:
/* 165F0C 802456AC 24040003 */ addiu $a0, $zero, 3
/* 165F10 802456B0 AFA20014 */ sw $v0, 0x14($sp)
/* 165F14 802456B4 0C0913F5 */ jal func_80244FD4
EnablePartnerBlur:
/* 165F18 802456B8 AFA30018 */ sw $v1, 0x18($sp)
/* 165F1C 802456BC 8FBF0020 */ lw $ra, 0x20($sp)
/* 165F20 802456C0 03E00008 */ jr $ra
@ -3032,7 +3025,6 @@ EnablePartnerBlur:
/* 165F2C 802456CC 0080402D */ daddu $t0, $a0, $zero
/* 165F30 802456D0 00A0482D */ daddu $t1, $a1, $zero
/* 165F34 802456D4 00C0502D */ daddu $t2, $a2, $zero
DisablePartnerBlur:
/* 165F38 802456D8 0100282D */ daddu $a1, $t0, $zero
/* 165F3C 802456DC 8FA20038 */ lw $v0, 0x38($sp)
/* 165F40 802456E0 8FA3003C */ lw $v1, 0x3c($sp)
@ -3041,7 +3033,6 @@ DisablePartnerBlur:
/* 165F4C 802456EC AFA70010 */ sw $a3, 0x10($sp)
/* 165F50 802456F0 0140382D */ daddu $a3, $t2, $zero
/* 165F54 802456F4 AFBF0020 */ sw $ra, 0x20($sp)
update_swap_partner:
/* 165F58 802456F8 AFA4001C */ sw $a0, 0x1c($sp)
/* 165F5C 802456FC 0000202D */ daddu $a0, $zero, $zero
/* 165F60 80245700 AFA20014 */ sw $v0, 0x14($sp)
@ -3306,7 +3297,6 @@ update_swap_partner:
/* 166324 80245AC4 00831021 */ addu $v0, $a0, $v1
/* 166328 80245AC8 00451021 */ addu $v0, $v0, $a1
/* 16632C 80245ACC 8E630008 */ lw $v1, 8($s3)
update_player_action:
/* 166330 80245AD0 92640003 */ lbu $a0, 3($s3)
/* 166334 80245AD4 00621821 */ addu $v1, $v1, $v0
/* 166338 80245AD8 90620000 */ lbu $v0, ($v1)
@ -3963,7 +3953,6 @@ update_player_action:
/* 166CA8 80246448 08091A38 */ j .L802468E0
/* 166CAC 8024644C 24060002 */ addiu $a2, $zero, 2
update_player_change_turn:
.L80246450:
/* 166CB0 80246450 10400125 */ beqz $v0, .L802468E8
/* 166CB4 80246454 00000000 */ nop
@ -4448,7 +4437,6 @@ update_player_change_turn:
/* 16738C 80246B2C 3C058015 */ lui $a1, 0x8015
/* 167390 80246B30 24A5F150 */ addiu $a1, $a1, -0xeb0
update_partner_action:
/* 167394 80246B34 3C068025 */ lui $a2, 0x8025
/* 167398 80246B38 24C6BDA8 */ addiu $a2, $a2, -0x4258
/* 16739C 80246B3C 24C20070 */ addiu $v0, $a2, 0x70
@ -4972,7 +4960,6 @@ update_partner_action:
/* 167B00 802472A0 00000000 */ nop
/* 167B04 802472A4 00620018 */ mult $v1, $v0
/* 167B08 802472A8 00001812 */ mflo $v1
update_enemy_change_turn:
/* 167B0C 802472AC 00831821 */ addu $v1, $a0, $v1
/* 167B10 802472B0 82440001 */ lb $a0, 1($s2)
/* 167B14 802472B4 8E420008 */ lw $v0, 8($s2)
@ -5165,7 +5152,6 @@ update_enemy_change_turn:
/* 167DC4 80247564 00021400 */ sll $v0, $v0, 0x10
/* 167DC8 80247568 00021C03 */ sra $v1, $v0, 0x10
/* 167DCC 8024756C 000217C2 */ srl $v0, $v0, 0x1f
update_enemy_action:
/* 167DD0 80247570 00621821 */ addu $v1, $v1, $v0
/* 167DD4 80247574 00032843 */ sra $a1, $v1, 1
/* 167DD8 80247578 808305E3 */ lb $v1, 0x5e3($a0)

75567
papermario/asm/code_16c8e0.s Normal file

File diff suppressed because it is too large Load Diff

View File

@ -13,7 +13,6 @@
func_80280000:
/* 7E0E80 80280000 3C028007 */ lui $v0, 0x8007
PartnerAfflictEnemy:
/* 7E0E84 80280004 8C42419C */ lw $v0, 0x419c($v0)
/* 7E0E88 80280008 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 7E0E8C 8028000C AFBF0018 */ sw $ra, 0x18($sp)
@ -180,7 +179,6 @@ func_80280208:
.L80280268:
/* 7E10E8 80280268 0C0496CF */ jal set_message_string
/* 7E10EC 8028026C 24050001 */ addiu $a1, $zero, 1
PartnerPowerBounceEnemy:
/* 7E10F0 80280270 3C048028 */ lui $a0, 0x8028
/* 7E10F4 80280274 24843EB0 */ addiu $a0, $a0, 0x3eb0
/* 7E10F8 80280278 24050001 */ addiu $a1, $zero, 1
@ -342,7 +340,6 @@ func_8028035C:
/* 7E1344 802804C4 3C018028 */ lui $at, 0x8028
/* 7E1348 802804C8 AC256524 */ sw $a1, 0x6524($at)
/* 7E134C 802804CC 080A0141 */ j .L80280504
PartnerTestEnemy:
/* 7E1350 802804D0 A6040000 */ sh $a0, ($s0)
.L802804D4:
@ -546,8 +543,7 @@ PartnerTestEnemy:
.L802807A0:
/* 7E1620 802807A0 0C039D5D */ jal add_item
/* 7E1624 802807A4 00000000 */ nop
DeletePartner:
/* 7E1624 802807A4 00000000 */ nop
/* 7E1628 802807A8 0C0A005F */ jal func_8028017C
/* 7E162C 802807AC 24040003 */ addiu $a0, $zero, 3
/* 7E1630 802807B0 AE620074 */ sw $v0, 0x74($s3)
@ -594,7 +590,6 @@ DeletePartner:
/* 7E16B4 80280834 1440003D */ bnez $v0, .L8028092C
/* 7E16B8 80280838 0000102D */ daddu $v0, $zero, $zero
/* 7E16BC 8028083C 8E430000 */ lw $v1, ($s2)
GetDamageIntensity:
/* 7E16C0 80280840 24020001 */ addiu $v0, $zero, 1
/* 7E16C4 80280844 3C018028 */ lui $at, 0x8028
/* 7E16C8 80280848 AC226534 */ sw $v0, 0x6534($at)
@ -614,7 +609,6 @@ GetDamageIntensity:
/* 7E16F4 80280874 0000102D */ daddu $v0, $zero, $zero
/* 7E16F8 80280878 8E430000 */ lw $v1, ($s2)
/* 7E16FC 8028087C 24020003 */ addiu $v0, $zero, 3
ActorAddMovePos:
/* 7E1700 80280880 3C018028 */ lui $at, 0x8028
/* 7E1704 80280884 AC226534 */ sw $v0, 0x6534($at)
/* 7E1708 80280888 AE700070 */ sw $s0, 0x70($s3)
@ -676,7 +670,6 @@ ActorAddMovePos:
/* 7E17C4 80280944 8FB10014 */ lw $s1, 0x14($sp)
/* 7E17C8 80280948 8FB00010 */ lw $s0, 0x10($sp)
/* 7E17CC 8028094C 03E00008 */ jr $ra
LoadStarPowerScript:
/* 7E17D0 80280950 27BD0030 */ addiu $sp, $sp, 0x30
func_80280954:
@ -745,7 +738,6 @@ func_80280954:
/* 7E18A8 80280A28 24050001 */ addiu $a1, $zero, 1
/* 7E18AC 80280A2C AE120108 */ sw $s2, 0x108($s0)
/* 7E18B0 80280A30 AE05018C */ sw $a1, 0x18c($s0)
BtlPutPartnerAway:
/* 7E18B4 80280A34 AE020000 */ sw $v0, ($s0)
/* 7E18B8 80280A38 8C620000 */ lw $v0, ($v1)
/* 7E18BC 80280A3C AE020084 */ sw $v0, 0x84($s0)

View File

@ -1,421 +0,0 @@
# geo layout macros
# 0x00: Branch and store return address
# 0x04: scriptTarget, segment address of geo layout
.macro geo_branch_and_link scriptTarget
.byte 0x00, 0x00, 0x00, 0x00
.word \scriptTarget
.endm
# 0x01: Terminate geo layout
# 0x01-0x03: unused
.macro geo_end
.byte 0x01, 0x00, 0x00, 0x00
.endm
# 0x02: Branch
# 0x01: if 1, store next geo layout address on stack
# 0x02-0x03: unused
# 0x04: scriptTarget, segment address of geo layout
.macro geo_branch type, scriptTarget
.byte 0x02, \type, 0x00, 0x00
.word \scriptTarget
.endm
# 0x03: Return from branch
# 0x01-0x03: unused
.macro geo_return
.byte 0x03, 0x00, 0x00, 0x00
.endm
# 0x04: Open node
# 0x01-0x03: unused
.macro geo_open_node
.byte 0x04, 0x00, 0x00, 0x00
.endm
# 0x05: Close node
# 0x01-0x03: unused
.macro geo_close_node
.byte 0x05, 0x00, 0x00, 0x00
.endm
# 0x06: TODO
# 0x01: unused
# 0x02: s16, index of some array
.macro geo_todo_06 param
.byte 0x06, 0x00
.hword \param
.endm
# 0x07: Update current scene graph node flags
# 0x01: u8 operation (0 = reset, 1 = set, 2 = clear)
# 0x02: s16 bits
.macro geo_update_node_flags operation, flagBits
.byte 0x07, \operation
.hword \flagBits
.endm
# 0x08: Create screen area scene graph node
# 0x01: unused
# 0x02: s16 num entries (+2) to allocate
# 0x04: s16 x
# 0x06: s16 y
# 0x08: s16 width
# 0x0A: s16 height
.macro geo_node_screen_area numEntries, x, y, width, height
.byte 0x08, 0x00
.hword \numEntries
.hword \x, \y, \width, \height
.endm
# 0x09: TODO Create ? scene graph node
# 0x02: s16 ?
.macro geo_todo_09 param
.byte 0x09, 0x00
.hword \param
.endm
# 0x0A: Create camera frustum scene graph node
# 0x01: u8 if nonzero, enable function field
# 0x02: s16 field of view
# 0x04: s16 near
# 0x06: s16 far
# 0x08: [GraphNodeFunc function]
.macro geo_camera_frustum fov, near, far, function=0
.byte 0x0A
.if (\function != 0)
.byte 0x01
.else
.byte 0x00
.endif
.hword \fov, \near, \far
.if (\function != 0)
.word \function
.endif
.endm
# 0x0B: Create a root scene graph node
# 0x01-0x03: unused
.macro geo_node_start
.byte 0x0B, 0x00, 0x00, 0x00
.endm
# 0x0C: Create zbuffer-toggling scene graph node
# 0x01: u8 enableZBuffer (1 = on, 0 = off)
# 0x02-0x03: unused
.macro geo_zbuffer enable
.byte 0x0C, \enable, 0x00, 0x00
.endm
# 0x0D: Create render range scene graph node
# 0x01-0x03: unused
# 0x04: s16 minDistance
# 0x06: s16 maxDistance
.macro geo_render_range minDistance, maxDistance
.byte 0x0D, 0x00, 0x00, 0x00
.hword \minDistance, \maxDistance
.endm
# 0x0E: Create switch-case scene graph node
# 0x01: unused
# 0x02: s16 numCases
# 0x04: GraphNodeFunc caseSelectorFunc
.macro geo_switch_case count, function
.byte 0x0E, 0x00
.hword \count
.word \function
.endm
# 0x0F: TODO Create ? scene graph node
# 0x01: unused
# 0x02: s16 ?
# 0x04: s16 unkX
# 0x06: s16 unkY
# 0x08: s16 unkZ
# 0x0A: s16 unkX_2
# 0x0C: s16 unkY_2
# 0x0E: s16 unkZ_2
# 0x10: GraphNodeFunc function
.macro geo_todo_0F unknown, x1, y1, z1, x2, y2, z2, function
.byte 0x0F, 0x00
.hword \unknown, \x1, \y1, \z1, \x2, \y2, \z2
.word \function
.endm
# 0x10: Create translation & rotation scene graph node with optional display list
# Four different versions of 0x10
# cmd+0x01: u8 params
# 0b1000_0000: if set, enable displayList field and drawingLayer
# 0b0111_0000: fieldLayout (determines how rest of data is formatted
# 0b0000_1111: drawingLayer
#
# fieldLayout = 0: Translate & Rotate
# 0x04: s16 xTranslation
# 0x06: s16 xTranslation
# 0x08: s16 xTranslation
# 0x0A: s16 xRotation
# 0x0C: s16 xRotation
# 0x0E: s16 xRotation
# 0x10: [u32 displayList: if MSbit of params set, display list segmented address]
.macro geo_translate_rotate layer, tx, ty, tz, rx, ry, rz, displayList=0
.byte 0x10
.if (\displayList != 0)
.byte 0x00 | \layer | 0x80
.else
.byte 0x00 | \layer
.endif
.hword 0x0000
.hword \tx, \ty, \tz
.hword \rx, \ry, \rz
.if (\displayList != 0)
.word \displayList
.endif
.endm
# fieldLayout = 1: Translate
# 0x02: s16 xTranslation
# 0x04: s16 yTranslation
# 0x06: s16 zTranslation
# 0x08: [u32 displayList: if MSbit of params set, display list segmented address]
.macro geo_translate layer, tx, ty, tz, displayList=0
.byte 0x10
.if (\displayList != 0)
.byte 0x10 | \layer | 0x80
.else
.byte 0x10 | \layer
.endif
.hword \tx, \ty, \tz
.if (\displayList != 0)
.word \displayList
.endif
.endm
# fieldLayout = 2: Rotate
# 0x02: s16 xRotation
# 0x04: s16 yRotation
# 0x06: s16 zRotation
# 0x08: [u32 displayList: if MSbit of params set, display list segmented address]
.macro geo_rotate layer, rx, ry, rz, displayList=0
.byte 0x10
.if (\displayList != 0)
.byte 0x20 | \layer | 0x80
.else
.byte 0x20 | \layer
.endif
.hword \rx, \ry, \rz
.if (\displayList != 0)
.word \displayList
.endif
.endm
# fieldLayout = 3: Rotate Y
# 0x02: s16 yRotation
# 0x04: [u32 displayList: if MSbit of params set, display list segmented address]
.macro geo_rotate_y layer, ry, displayList=0
.byte 0x10
.if (\displayList != 0)
.byte 0x30 | \layer | 0x80
.else
.byte 0x30 | \layer
.endif
.hword \ry
.if (\displayList != 0)
.word \displayList
.endif
.endm
# 0x11: TODO Create ? scene graph node with optional display list
# 0x01: u8 params
# 0b1000_0000: if set, enable displayList field and drawingLayer
# 0b0000_1111: drawingLayer
# 0x02: s16 unkX
# 0x04: s16 unkY
# 0x06: s16 unkZ
# 0x08: [u32 displayList: if MSbit of params set, display list segmented address]
.macro geo_todo_11 layer, ux, uy, uz, displayList=0
.byte 0x11
.if (\displayList != 0)
.byte 0x80 | \layer
.else
.byte 0x00
.endif
.hword \ux, \uy, \uz
.if (\displayList != 0)
.word \displayList
.endif
.endm
# 0x12: TODO Create ? scene graph node
# 0x01: u8 params
# 0b1000_0000: if set, enable displayList field and drawingLayer
# 0b0000_1111: drawingLayer
# 0x02: s16 unkX
# 0x04: s16 unkY
# 0x06: s16 unkZ
# 0x08: [u32 displayList: if MSbit of params set, display list segmented address]
.macro geo_todo_12 layer, ux, uy, uz, displayList=0
.byte 0x12
.if (\displayList != 0)
.byte 0x80 | \layer
.else
.byte 0x00
.endif
.hword \ux, \uy, \uz
.if (\displayList != 0)
.word \displayList
.endif
.endm
# 0x13: Create display list scene graph node with translation
# 0x01: u8 drawingLayer
# 0x02: s16 xTranslation
# 0x04: s16 yTranslation
# 0x06: s16 zTranslation
# 0x08: u32 displayList: dislay list segmented address
.macro geo_dl_translated layer, x, y, z, displayList=0
.byte 0x13, \layer
.hword \x, \y, \z
.word \displayList
.endm
# 0x14: Create billboarding node with optional display list
# 0x01: u8 params
# 0b1000_0000: if set, enable displayList field and drawingLayer
# 0b0000_1111: drawingLayer
# 0x02: s16 xTranslation
# 0x04: s16 yTranslation
# 0x06: s16 zTranslation
# 0x08: [u32 displayList: if MSbit of params is set, display list segmented address]
.macro geo_billboard layer=0, tx=0, ty=0, tz=0, displayList=0
.byte 0x14
.if (\displayList != 0)
.byte 0x80 | \layer
.else
.byte 0x00
.endif
.hword \tx, \ty, \tz
.if (\displayList != 0)
.word \displayList
.endif
.endm
# 0x15: Create plain display list scene graph node
# 0x01: u8 drawingLayer
# 0x02=0x03: unused
# 0x04: u32 displayList: display list segmented address
.macro geo_display_list layer, displayList
.byte 0x15, \layer, 0x00, 0x00
.word \displayList
.endm
# 0x16: Create shadow scene graph node
# 0x01: unused
# 0x02: s16 shadowType (cast to u8)
# 0x04: s16 shadowSolidity (cast to u8)
# 0x06: s16 shadowScale
.set SHADOW_CIRCLE_UNK0, 0x00
.set SHADOW_CIRCLE_UNK1, 0x01
.set SHADOW_CIRCLE_UNK2, 0x02 # unused shadow type
.set SHADOW_SQUARE_PERMANENT, 0x0A # square shadow that never disappears
.set SHADOW_SQUARE_SCALABLE, 0x0B # square shadow, shrinks with distance
.set SHADOW_SQUARE_TOGGLABLE, 0x0C # square shadow, disappears with distance
.set SHADOW_CIRCLE_PLAYER, 0x63 # player (Mario) shadow
.set SHADOW_RECTANGLE_HARDCODED_OFFSET, 0x32 # offset of hard-coded shadows
.macro geo_shadow type, solidity, scale
.byte 0x16, 0x00
.hword \type, \solidity, \scale
.endm
# 0x17: TODO Create ? scene graph node
# 0x01-0x03: unused
.macro geo_todo_17
.byte 0x17, 0x00, 0x00, 0x00
.endm
# 0x18: Create ? scene graph node
# 0x01: unused
# 0x02: s16 parameter
# 0x04: GraphNodeFunc function
.macro geo_asm param, function
.byte 0x18, 0x00
.hword \param
.word \function
.endm
# 0x19: Create background scene graph node
# 0x02: s16 background: background ID, or RGBA5551 color if backgroundFunc is null
# 0x04: GraphNodeFunc backgroundFunc
.macro geo_background param, function=0
.byte 0x19, 0x00
.hword \param
.word \function
.endm
# 0x1A: No operation
.macro geo_nop_1A
.byte 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.endm
# 0x1B: TODO Create ? scene graph node
# 0x02: s16 index of array
.macro geo_todo_1B param
.byte 0x1B, 0x00
.hword \param
.endm
# 0x1C: TODO Create ? scene graph node
# 0x01: u8 unk01
# 0x02: s16 unkX
# 0x04: s16 unkY
# 0x06: s16 unkZ
# 0x08: GraphNodeFunc nodeFunc
.macro geo_todo_1C param, ux, uy, uz, nodeFunc
.byte 0x1C, \param
.hword \ux, \uy, \uz
.word \nodeFunc
.endm
# 0x1D: Create scale scene graph node with optional display list
# 0x01: u8 params
# 0b1000_0000: if set, enable displayList field and drawingLayer
# 0b0000_1111: drawingLayer
# 0x02-0x03: unused
# 0x04: u32 scale (0x10000 = 1.0)
# 0x08: [u32 displayList: if MSbit of params is set, display list segment address]
.macro geo_scale layer, scale, displayList=0
.byte 0x1D
.if (\displayList != 0)
.byte 0x80 | \layer
.else
.byte 0x00
.endif
.byte 0x00, 0x00
.word \scale
.if (\displayList != 0)
.word \displayList
.endif
.endm
# 0x1E: No operation
.macro geo_nop_1E
.byte 0x1E, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.endm
# 0x1F: No operation
.macro geo_nop_1F
.byte 0x1F, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.endm
# 0x20: Create render distance scene graph node (unconfirmed?)
# 0x01: unused
# 0x02: s16 renderDistance?
.macro geo_start_distance renderDistance
.byte 0x20, 0x00
.hword \renderDistance
.endm

View File

@ -1,7 +0,0 @@
# common macros
# F3D vertex
.macro vertex \x, \y, \z, \u, \v, \r=0xFF, \g=0xFF, \b=0xFF, \a=0xFF
.hword \x, \y, \z, 0, \u, \v
.byte \r, \g, \b, \a
.endm

View File

@ -5,6 +5,7 @@ func_04000974 = 0x04000974;
func_04000A34 = 0x04000A34;
func_04000AC4 = 0x04000AC4;
initialize_battle = 0x8023E130;
func_801449DC = 0x801449DC;
update_battle_state = 0x8023E438;
draw_main_battle_ui = 0x8023EA7C;
func_802409F4 = 0x802409F4;
@ -14,3 +15,116 @@ func_802BD7DC = 0x802BD7DC;
func_802BE070 = 0x802BE070;
D_8014F140 = 0x8014F140;
D_8015C7C0 = 0x8015C7C0;
func_80047820 = 0x80047820;
func_80047898 = 0x80047898;
func_800479A0 = 0x800479A0;
func_80047AA8 = 0x80047AA8;
update_player_menu = 0x802A5988;
update_partner_menu = 0x802A81C8;
func_802A91F8 = 0x802A91F8;
func_802A9208 = 0x802A9208;
func_802A9228 = 0x802A9228;
func_802A9234 = 0x802A9234;
func_802A9254 = 0x802A9254;
func_802A9278 = 0x802A9278;
func_802A928C = 0x802A928C;
func_802A9294 = 0x802A9294;
func_802A9298 = 0x802A9298;
func_802A92A0 = 0x802A92A0;
func_802A92D4 = 0x802A92D4;
func_802A92DC = 0x802A92DC;
func_802A92F0 = 0x802A92F0;
func_802A9310 = 0x802A9310;
func_802A936C = 0x802A936C;
func_802A9378 = 0x802A9378;
func_802A948C = 0x802A948C;
func_802A94A4 = 0x802A94A4;
func_802A94D8 = 0x802A94D8;
func_802A9544 = 0x802A9544;
func_802A955C = 0x802A955C;
func_802A9590 = 0x802A9590;
func_802A959C = 0x802A959C;
func_802A9634 = 0x802A9634;
func_802A963C = 0x802A963C;
func_802A9664 = 0x802A9664;
func_802A96B8 = 0x802A96B8;
func_802A96DC = 0x802A96DC;
func_802A96EC = 0x802A96EC;
func_802A96F4 = 0x802A96F4;
func_802A9708 = 0x802A9708;
func_802A9718 = 0x802A9718;
func_802A9720 = 0x802A9720;
func_802A973C = 0x802A973C;
func_802A9744 = 0x802A9744;
func_802A9764 = 0x802A9764;
func_802A97AC = 0x802A97AC;
func_802A97BC = 0x802A97BC;
func_802A97CC = 0x802A97CC;
func_802A97F8 = 0x802A97F8;
func_802A97FC = 0x802A97FC;
func_802A9810 = 0x802A9810;
func_802A981C = 0x802A981C;
func_802A9834 = 0x802A9834;
func_802A984C = 0x802A984C;
func_802A9894 = 0x802A9894;
func_802A9898 = 0x802A9898;
func_802A98B0 = 0x802A98B0;
func_802A98D0 = 0x802A98D0;
func_802A98DC = 0x802A98DC;
func_802A98E0 = 0x802A98E0;
func_802A9914 = 0x802A9914;
func_802A992C = 0x802A992C;
func_802A9990 = 0x802A9990;
func_802A99D4 = 0x802A99D4;
func_802A9A30 = 0x802A9A30;
func_802A9A54 = 0x802A9A54;
func_802AA014 = 0x802AA014;
func_802AA0D8 = 0x802AA0D8;
update_targeting_enemies = 0x802AA688;
func_802D4164 = 0x802D4164;
func_802D7460 = 0x802D7460;
func_802D74C0 = 0x802D74C0;
func_802DE0C0 = 0x802DE0C0;
func_8002AAC4 = 0x8002AAC4;
func_8003E514 = 0x8003E514;
func_80047608 = 0x80047608;
func_800476F4 = 0x800476F4;
func_8004778C = 0x8004778C;
func_800477F4 = 0x800477F4;
func_800478F8 = 0x800478F8;
func_80047928 = 0x80047928;
func_80047A00 = 0x80047A00;
func_80047A30 = 0x80047A30;
func_80047B08 = 0x80047B08;
func_80047B38 = 0x80047B38;
func_80047B84 = 0x80047B84;
func_80047BE4 = 0x80047BE4;
func_80047C14 = 0x80047C14;
func_80047CA4 = 0x80047CA4;
func_80047D00 = 0x80047D00;
func_80047D30 = 0x80047D30;
func_80047DC0 = 0x80047DC0;
func_80047E1C = 0x80047E1C;
func_80048064 = 0x80048064;
func_800480F4 = 0x800480F4;
func_80048170 = 0x80048170;
func_80048200 = 0x80048200;
func_800E9810 = 0x800E9810;
func_80144218 = 0x80144218;
func_80144238 = 0x80144238;
func_80144FD8 = 0x80144FD8;
func_801451D4 = 0x801451D4;
func_80145224 = 0x80145224;
func_80145274 = 0x80145274;
func_80244BC8 = 0x80244BC8;
func_802A8180 = 0x802A8180;
func_802A9AE8 = 0x802A9AE8;
func_802A9B44 = 0x802A9B44;
func_802AA05C = 0x802AA05C;
func_802AA0B8 = 0x802AA0B8;
func_802AA640 = 0x802AA640;
func_802AACD8 = 0x802AACD8;
func_802AB330 = 0x802AB330;
func_802AB338 = 0x802AB338;