Merge pull request #499 from hatal175/data7

match functions + const data
This commit is contained in:
notyourav
2022-04-21 10:43:52 -07:00
committed by GitHub
44 changed files with 433 additions and 732 deletions
@@ -1,63 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
ldr r3, _080774FC @ =gPlayerEntity
movs r0, #0x2e
ldrsh r2, [r3, r0]
ldr r5, _08077500 @ =gUnk_0811BE1E
ldrb r0, [r3, #0x14]
movs r1, #6
ands r1, r0
adds r0, r1, r5
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r2, r2, r0
ldr r4, _08077504 @ =gRoomControls
ldrh r0, [r4, #6]
subs r2, r2, r0
asrs r6, r2, #4
movs r2, #0x3f
ands r6, r2
movs r7, #0x32
ldrsh r0, [r3, r7]
adds r1, #1
adds r1, r1, r5
ldrb r1, [r1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
adds r0, r0, r1
ldrh r1, [r4, #8]
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r2
lsls r0, r0, #6
orrs r6, r0
adds r4, r3, #0
adds r4, #0x38
ldrb r1, [r4]
adds r0, r6, #0
bl sub_080B1B44
cmp r0, #0x16
bhi _080774F6
cmp r0, #0xe
bhi _08077508
_080774F6:
movs r0, #0
b _0807751A
.align 2, 0
_080774FC: .4byte gPlayerEntity
_08077500: .4byte gUnk_0811BE1E
_08077504: .4byte gRoomControls
_08077508:
adds r0, r6, #0
ldrb r1, [r4]
bl sub_080B1AE0
cmp r0, #0x56
bne _08077518
movs r0, #0x56
b _0807751A
_08077518:
movs r0, #1
_0807751A:
pop {r4, r5, r6, r7, pc}
.syntax divided
-61
View File
@@ -1,61 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
mov sb, r0
mov r8, r1
adds r7, r2, #0
adds r6, r3, #0
ldr r0, _08080710 @ =gArea
ldr r1, _08080714 @ =0x0000085C
adds r0, r0, r1
ldr r0, [r0]
ldr r5, [r0, #0x18]
ldrh r0, [r5]
ldr r1, _08080718 @ =0x0000FFFF
cmp r0, r1
beq _08080728
mov sl, r1
_080806E2:
ldrh r2, [r5]
movs r0, #1
lsls r0, r2
ands r0, r6
cmp r0, #0
beq _08080720
ldr r1, _0808071C @ =gUnk_0811E7AC
lsls r0, r2, #2
adds r0, r0, r1
ldr r4, [r0]
adds r0, r5, #0
mov r1, sb
mov r2, r8
adds r3, r7, #0
bl _call_via_r4
cmp r0, #0
beq _08080720
adds r0, r5, #0
bl DoExitTransition
movs r0, #1
b _0808072A
.align 2, 0
_08080710: .4byte gArea
_08080714: .4byte 0x0000085C
_08080718: .4byte 0x0000FFFF
_0808071C: .4byte gUnk_0811E7AC
_08080720:
adds r5, #0x14
ldrh r0, [r5]
cmp r0, sl
bne _080806E2
_08080728:
movs r0, #0
_0808072A:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.syntax divided
-51
View File
@@ -1,51 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r6, r0, #0
adds r5, r1, #0
ldr r0, _08080778 @ =gArea
ldr r1, _0808077C @ =0x0000085C
adds r0, r0, r1
ldr r0, [r0]
ldr r4, [r0, #0x18]
movs r0, #0xa
mov r8, r0
ldrh r0, [r4]
ldr r1, _08080780 @ =0x0000FFFF
cmp r0, r1
beq _0808078C
adds r7, r1, #0
_08080756:
movs r0, #1
ldrh r1, [r4]
lsls r0, r1
mov r1, r8
ands r0, r1
cmp r0, #0
beq _08080784
adds r0, r4, #0
adds r1, r6, #0
adds r2, r5, #0
movs r3, #0
bl sub_08080808
cmp r0, #0
beq _08080784
adds r0, r4, #0
b _0808078E
.align 2, 0
_08080778: .4byte gArea
_0808077C: .4byte 0x0000085C
_08080780: .4byte 0x0000FFFF
_08080784:
adds r4, #0x14
ldrh r0, [r4]
cmp r0, r7
bne _08080756
_0808078C:
movs r0, #0
_0808078E:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.syntax divided
-66
View File
@@ -1,66 +0,0 @@
.syntax unified
push {r4, lr}
adds r4, r0, #0
cmp r3, #1
beq _080807C0
cmp r3, #1
blo _080807AC
cmp r3, #2
beq _080807D4
cmp r3, #3
beq _080807E8
_080807A8:
movs r0, #0
b _08080800
_080807AC:
ldr r0, _080807BC @ =gRoomControls
ldrh r0, [r0, #0x1e]
lsrs r0, r0, #1
movs r3, #1
cmp r0, r1
bhs _080807F6
movs r3, #2
b _080807F6
.align 2, 0
_080807BC: .4byte gRoomControls
_080807C0:
ldr r0, _080807D0 @ =gRoomControls
ldrh r0, [r0, #0x20]
lsrs r0, r0, #1
movs r3, #4
cmp r0, r2
bhs _080807F6
movs r3, #8
b _080807F6
.align 2, 0
_080807D0: .4byte gRoomControls
_080807D4:
ldr r0, _080807E4 @ =gRoomControls
ldrh r0, [r0, #0x1e]
lsrs r0, r0, #1
movs r3, #0x10
cmp r0, r1
bhs _080807F6
movs r3, #0x20
b _080807F6
.align 2, 0
_080807E4: .4byte gRoomControls
_080807E8:
ldr r0, _08080804 @ =gRoomControls
ldrh r0, [r0, #0x20]
lsrs r0, r0, #1
movs r3, #0x40
cmp r0, r2
bhs _080807F6
movs r3, #0x80
_080807F6:
ldrb r0, [r4, #0xa]
ands r0, r3
cmp r0, #0
beq _080807A8
movs r0, #1
_08080800:
pop {r4, pc}
.align 2, 0
_08080804: .4byte gRoomControls
.syntax divided
-31
View File
@@ -1,31 +0,0 @@
.syntax unified
push {r4, r5, lr}
adds r3, r0, #0
adds r5, r2, #0
ldrb r0, [r3, #0xa]
lsls r0, r0, #1
ldr r2, _08080838 @ =gUnk_0811E7BC
adds r4, r0, r2
ldrb r0, [r4]
ldrh r2, [r3, #2]
subs r1, r1, r2
adds r1, r1, r0
lsls r0, r0, #1
cmp r1, r0
bhi _0808083C
ldrb r1, [r4, #1]
ldrh r0, [r3, #4]
subs r0, r5, r0
adds r0, r0, r1
lsls r1, r1, #1
cmp r0, r1
bhi _0808083C
movs r0, #1
b _0808083E
.align 2, 0
_08080838: .4byte gUnk_0811E7BC
_0808083C:
movs r0, #0
_0808083E:
pop {r4, r5, pc}
.syntax divided
-40
View File
@@ -40793,26 +40793,6 @@
"size": 76,
"type": "sprite_frame"
},
{
"path": "itemBomb/gUnk_0811BDAC.bin",
"start": 1162668,
"size": 8
},
{
"path": "itemMoleMitts/gUnk_0811BE14.bin",
"start": 1162772,
"size": 2
},
{
"path": "itemMoleMitts/gUnk_0811BE16.bin",
"start": 1162774,
"size": 8
},
{
"path": "itemMoleMitts/gUnk_0811BE1E.bin",
"start": 1162782,
"size": 10
},
{
"path": "data_0811BE38/gUnk_0811BE38.bin",
"start": 1162808,
@@ -41025,16 +41005,6 @@
"DEMO_JP": -2192
}
},
{
"path": "data_0811E750/gUnk_0811E7BC.bin",
"start": 1173436,
"size": 8
},
{
"path": "itemOnGround/gUnk_0811E84C.bin",
"start": 1173580,
"size": 944
},
{
"path": "animations/gSpriteAnimations_DeathFx_1_0.bin",
"start": 1174740,
@@ -41059,11 +41029,6 @@
"size": 89,
"type": "animation"
},
{
"path": "button/gUnk_0811EE50.bin",
"start": 1175120,
"size": 12
},
{
"path": "animations/gSpriteAnimations_MinishEmoticon_2.bin",
"start": 1175140,
@@ -42006,11 +41971,6 @@
"size": 4,
"type": "animation"
},
{
"path": "railtrack/gUnk_081205E0.bin",
"start": 1181152,
"size": 4
},
{
"path": "lilypadLarge/gUnk_08120620.bin",
"start": 1181216,
-15
View File
@@ -1,15 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_0811BD98:: @ 0811BD98
.4byte sub_08075FF8
.4byte 00000000
.4byte sub_08076488
.4byte sub_08076518
.4byte sub_080765E0
gUnk_0811BDAC:: @ 0811BDAC
.incbin "itemBomb/gUnk_0811BDAC.bin"
-9
View File
@@ -1,9 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_0811BD78:: @ 0811BD78
.4byte sub_08075D2C
.4byte sub_08075D88
-14
View File
@@ -1,14 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_0811BD80:: @ 0811BD80
.4byte sub_08075DF4
.4byte sub_08075E40
.4byte sub_08075EC0
.4byte sub_08075F38
.4byte sub_08075F84
.4byte sub_08075D88
-11
View File
@@ -1,11 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_0811BE28:: @ 0811BE28
.4byte sub_08077534
.4byte sub_08077618
.4byte sub_08077640
.4byte sub_0807766C
-11
View File
@@ -1,11 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_0811BD68:: @ 0811BD68
.4byte sub_08075A0C
.4byte sub_08075ADC
.4byte sub_08075B54
.4byte sub_08075C9C
-20
View File
@@ -1,20 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_0811BE04:: @ 0811BE04
.4byte sub_08077130
.4byte sub_080771C8
.4byte sub_080772A8
.4byte sub_08077448
gUnk_0811BE14:: @ 0811BE14
.incbin "itemMoleMitts/gUnk_0811BE14.bin"
gUnk_0811BE16:: @ 0811BE16
.incbin "itemMoleMitts/gUnk_0811BE16.bin"
gUnk_0811BE1E:: @ 0811BE1E
.incbin "itemMoleMitts/gUnk_0811BE1E.bin"
-9
View File
@@ -1,9 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gOcarinaStates:: @ 0811BDD8
.4byte OcarinaUse
.4byte OcarinaUpdate
-9
View File
@@ -1,9 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_0811BDE0:: @ 0811BDE0
.4byte sub_08076C98
.4byte sub_08076CBC
-10
View File
@@ -1,10 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_0811BDE8:: @ 0811BDE8
.4byte sub_08076D04
.4byte sub_08076D34
.4byte sub_08076D94
-16
View File
@@ -1,16 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_0811BD44:: @ 0811BD44
.4byte sub_08075338
.4byte sub_080754B8
.4byte sub_080755F0
.4byte sub_0807564C
.4byte sub_08075738
.4byte sub_08075580
.4byte sub_08075898
.4byte sub_080758B0
.4byte sub_08075900
-14
View File
@@ -1,14 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_0811BDB4:: @ 0811BDB4
.4byte ItemPickupCheck
.4byte sub_080762D8
.4byte sub_08076488
.4byte sub_08076518
.4byte sub_080765E0
.4byte sub_0807660C
-11
View File
@@ -1,11 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_081146B8:: @ 081146B8
.incbin "npc58/gUnk_081146B8.bin"
gUnk_081146D0:: @ 081146D0
.incbin "data_081146D0/gUnk_081146D0.bin"
-16
View File
@@ -1,16 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_0811EE38:: @ 0811EE38
.4byte sub_08081AE0
.4byte sub_08081B84
.4byte sub_08081BAC
.4byte sub_08081BE0
.4byte sub_08081C30
.4byte sub_08081C98
gUnk_0811EE50:: @ 0811EE50
.incbin "button/gUnk_0811EE50.bin"
-52
View File
@@ -1,52 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_0811E7C4:: @ 0811E7C4
.4byte sub_080808D8
.4byte sub_080808E4
.4byte sub_08080904
.4byte sub_08080910
gUnk_0811E7D4:: @ 0811E7D4
.4byte sub_08080F20
.4byte sub_080811EC
.4byte sub_0808122C
.4byte sub_08081328
.4byte sub_0808136C
gUnk_0811E7E8:: @ 0811E7E8
.4byte sub_080810A8
.4byte sub_080810FC
.4byte sub_08081150
.4byte sub_08081134
.4byte sub_08081188
.4byte sub_080810A8
.4byte sub_080810A8
.4byte sub_080811AC
.4byte sub_080811C8
.4byte sub_080811D8
.4byte sub_080810A8
gUnk_0811E814:: @ 0811E814
.4byte sub_08081248
.4byte sub_08081248
.4byte sub_0808126C
.4byte sub_0808127C
.4byte nullsub_113
.4byte sub_080812A0
.4byte sub_08081248
.4byte sub_080812A8
.4byte sub_080812E8
.4byte nullsub_510
.4byte sub_08081248
gUnk_0811E840:: @ 0811E840
.4byte sub_080813D4
.4byte sub_080813E8
.4byte sub_080813F0
gUnk_0811E84C:: @ 0811E84C
.incbin "itemOnGround/gUnk_0811E84C.bin"
-30
View File
@@ -1,30 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_0811F090:: @ 0811F090
.4byte sub_0808222C
.4byte sub_08082310
.4byte sub_080824F8
.4byte sub_080826E4
.4byte sub_08082614
.4byte sub_08082824
gUnk_0811F0A8:: @ 0811F0A8
.4byte sub_08082510
.4byte nullsub_511
.4byte sub_08082588
.4byte sub_0808259C
.4byte sub_080825E8
.4byte sub_080825F0
.4byte sub_08082608
gUnk_0811F0C4:: @ 0811F0C4
.4byte sub_080826FC
.4byte sub_0808270C
.4byte sub_08082778
.4byte sub_080827F8
.4byte nullsub_512
.4byte sub_08082818
-14
View File
@@ -1,14 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_081205D0:: @ 081205D0
.4byte sub_080851AC
.4byte sub_08085264
.4byte sub_080852B4
.4byte sub_08085308
gUnk_081205E0:: @ 081205E0
.incbin "railtrack/gUnk_081205E0.bin"
-19
View File
@@ -1,19 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_0811E7AC:: @ 0811E7AC
.4byte sub_08080794
.4byte sub_08080808
.4byte sub_08080794
.4byte sub_08080808
gUnk_0811E7BC:: @ 0811E7BC
.incbin "data_0811E750/gUnk_0811E7BC.bin"
+1 -1
View File
@@ -52,7 +52,7 @@ extern struct_02019EE0 gMapDataBottomSpecial;
// TODO size: 0x8000 from ClearTilemaps?
extern void sub_08056FEC(u32, struct_020227E8*);
extern u32 sub_0805F46C(u32, Font*);
extern u32 sub_0805F46C(u32, const Font*);
extern void ClearTilemaps(void);
extern void sub_0805194C(u32);
extern WStruct* sub_0805F2C8(void);
+16 -18
View File
@@ -30,7 +30,6 @@ SECTIONS {
. = 0x00001A40; gBG3Buffer = .;
. = 0x00002A40; gSave = .;
. = 0x00002AC0; gUnk_02002AC0 = .;
. = 0x00002AC8; gUnk_02002AC8 = .;
. = 0x00002B0E; gUnk_02002B0E = .;
. = 0x00002B32; gUnk_02002B32 = .;
. = 0x00002B54; gUnk_02002B54 = .;
@@ -1297,7 +1296,7 @@ SECTIONS {
src/npc/cucco.o(.rodata);
src/npc/cuccoChick.o(.rodata);
src/npc/phonograph.o(.rodata);
data/const/npc/npc58.o(.rodata);
src/npc/npc58.o(.rodata);
src/npcDefinitions.o(.rodata);
data/data_081146D0.o(.rodata);
src/physics.o(.rodata);
@@ -1307,34 +1306,33 @@ SECTIONS {
src/playerItem/playerItemPacciCane.o(.rodata);
src/player.o(.rodata);
src/item.o(.rodata);
data/const/item/itemSword.o(.rodata);
data/const/item/itemLantern.o(.rodata);
data/const/item/itemBoomerang.o(.rodata);
data/const/item/itemBow.o(.rodata);
data/const/item/itemBomb.o(.rodata);
data/const/item/itemTryPickupObject.o(.rodata);
src/item/itemSword.o(.rodata);
src/item/itemLantern.o(.rodata);
src/item/itemBoomerang.o(.rodata);
src/item/itemBow.o(.rodata);
src/item/itemBomb.o(.rodata);
src/item/itemTryPickupObject.o(.rodata);
src/item/itemPegasusBoots.o(.rodata);
data/const/item/itemOcarina.o(.rodata);
data/const/item/itemPacciCane.o(.rodata);
data/const/item/itemShield.o(.rodata);
src/item/itemOcarina.o(.rodata);
src/item/itemPacciCane.o(.rodata);
src/item/itemShield.o(.rodata);
src/item/itemGustJar.o(.rodata);
data/const/item/itemMoleMitts.o(.rodata);
data/const/item/itemJarEmpty.o(.rodata);
src/item/itemMoleMitts.o(.rodata);
src/item/itemJarEmpty.o(.rodata);
data/data_0811BE38.o(.rodata);
data/map/room_headers.o(.rodata);
src/flags.o(.rodata);
src/save.o(.rodata);
src/script.o(.rodata);
src/scroll.o(.rodata);
data/data_0811E750.o(.rodata);
data/const/object/itemOnGround.o(.rodata);
src/object/itemOnGround.o(.rodata);
src/object/deathFx.o(.rodata);
data/animations/object/deathFx.o(.rodata);
src/object/itemForSale.o(.rodata);
data/const/object/button.o(.rodata);
src/object/button.o(.rodata);
src/object/minishEmoticon.o(.rodata);
data/animations/object/minishEmoticon.o(.rodata);
data/const/object/pot.o(.rodata);
src/object/pot.o(.rodata);
data/animations/object/pot.o(.rodata);
src/object/ezloCap.o(.rodata);
data/animations/object/ezloCap.o(.rodata);
@@ -1352,7 +1350,7 @@ SECTIONS {
src/object/playerClone.o(.rodata);
src/object/object11.o(.rodata);
src/object/object12.o(.rodata);
data/const/object/railtrack.o(.rodata);
src/object/railtrack.o(.rodata);
data/animations/object/railtrack.o(.rodata);
data/const/object/lilypadLarge.o(.rodata);
src/object/object15.o(.rodata);
+12 -5
View File
@@ -5,19 +5,26 @@
#include "playeritem.h"
#include "functions.h"
extern void (*const gUnk_0811BD98[])(ItemBehavior*, u32);
extern s8 gUnk_0811BDAC[];
void sub_08075FF8(ItemBehavior*, u32);
void sub_08076488(ItemBehavior*, u32);
void sub_08076518(ItemBehavior*, u32);
void sub_080765E0(ItemBehavior*, u32);
void ItemBomb(ItemBehavior* this, u32 idx) {
gUnk_0811BD98[this->stateID](this, idx);
static void (*const stateFuncs[])(ItemBehavior*, u32) = {
sub_08075FF8, NULL, sub_08076488, sub_08076518, sub_080765E0,
};
stateFuncs[this->stateID](this, idx);
}
void sub_08075FF8(ItemBehavior* this, u32 idx) {
static const s8 gUnk_0811BDAC[] = {
0, -8, 4, -1, 0, 2, -4, -1,
};
Entity* entity;
u32 maxBombs;
u32 bombCount;
s8* pos;
const s8* pos;
s32 x;
s32 y;
+7 -2
View File
@@ -1,10 +1,15 @@
#include "item.h"
#include "functions.h"
extern void (*const gUnk_0811BD78[])(ItemBehavior*, u32);
void sub_08075D2C(ItemBehavior*, u32);
void sub_08075D88(ItemBehavior*, u32);
void ItemBoomerang(ItemBehavior* this, u32 idx) {
gUnk_0811BD78[this->stateID](this, idx);
static void (*const stateFuncs[])(ItemBehavior*, u32) = {
sub_08075D2C,
sub_08075D88,
};
stateFuncs[this->stateID](this, idx);
}
void sub_08075D2C(ItemBehavior* this, u32 idx) {
+10 -2
View File
@@ -2,10 +2,18 @@
#include "functions.h"
#include "save.h"
extern void (*const gUnk_0811BD80[])(ItemBehavior*, u32);
void sub_08075DF4(ItemBehavior*, u32);
void sub_08075E40(ItemBehavior*, u32);
void sub_08075EC0(ItemBehavior*, u32);
void sub_08075F38(ItemBehavior*, u32);
void sub_08075F84(ItemBehavior*, u32);
void sub_08075D88(ItemBehavior*, u32);
void ItemBow(ItemBehavior* this, u32 idx) {
gUnk_0811BD80[this->stateID](this, idx);
static void (*const stateFuncs[])(ItemBehavior*, u32) = {
sub_08075DF4, sub_08075E40, sub_08075EC0, sub_08075F38, sub_08075F84, sub_08075D88,
};
stateFuncs[this->stateID](this, idx);
}
void sub_08075DF4(ItemBehavior* this, u32 idx) {
+11 -4
View File
@@ -2,12 +2,19 @@
#include "save.h"
#include "functions.h"
extern void (*const gUnk_0811BE28[])(ItemBehavior*, u32);
extern u8 gUnk_02002AC8[];
void sub_08077534(ItemBehavior*, u32);
void sub_08077618(ItemBehavior*, u32);
void sub_08077640(ItemBehavior*, u32);
void sub_0807766C(ItemBehavior*, u32);
void ItemJarEmpty(ItemBehavior* this, u32 idx) {
gUnk_0811BE28[this->stateID](this, idx);
static void (*const stateFuncs[])(ItemBehavior*, u32) = {
sub_08077534,
sub_08077618,
sub_08077640,
sub_0807766C,
};
stateFuncs[this->stateID](this, idx);
}
void sub_08077534(ItemBehavior* this, u32 idx) {
+11 -6
View File
@@ -4,17 +4,22 @@
#include "object.h"
#include "game.h"
extern void (*const gUnk_0811BD68[])(ItemBehavior*, u32);
extern s8 gUnk_08126EEC[];
extern Entity* sub_08077BD4(ItemBehavior*);
extern bool32 sub_08077F10(ItemBehavior*);
extern void sub_0807AB44(Entity*, s32, s32);
void sub_08075A0C(ItemBehavior*, u32);
void sub_08075ADC(ItemBehavior*, u32);
void sub_08075B54(ItemBehavior*, u32);
void sub_08075C9C(ItemBehavior*, u32);
void ItemLantern(ItemBehavior* this, u32 idx) {
gUnk_0811BD68[this->stateID](this, idx);
static void (*const stateFuncs[])(ItemBehavior*, u32) = {
sub_08075A0C,
sub_08075ADC,
sub_08075B54,
sub_08075C9C,
};
stateFuncs[this->stateID](this, idx);
}
void sub_08075A0C(ItemBehavior* this, u32 idx) {
+41 -10
View File
@@ -5,21 +5,23 @@
#include "effects.h"
#include "object.h"
extern void (*const gUnk_0811BE04[])(ItemBehavior*, u32);
s32 sub_080774A0(void);
extern u8 gUnk_0811BE14[];
extern s32 sub_0800875A(Entity*, u32, ItemBehavior*);
extern void UpdatePlayerMovement(void);
extern bool32 sub_0807B5B0(Entity*);
extern const s16 gUnk_0811BE16[];
void sub_08077130(ItemBehavior*, u32);
void sub_080771C8(ItemBehavior*, u32);
void sub_080772A8(ItemBehavior*, u32);
void sub_08077448(ItemBehavior*, u32);
void ItemMoleMitts(ItemBehavior* this, u32 idx) {
gUnk_0811BE04[this->stateID](this, idx);
static void (*const stateFuncs[])(ItemBehavior*, u32) = {
sub_08077130,
sub_080771C8,
sub_080772A8,
sub_08077448,
};
stateFuncs[this->stateID](this, idx);
}
void sub_08077130(ItemBehavior* this, u32 idx) {
@@ -53,6 +55,10 @@ void sub_08077130(ItemBehavior* this, u32 idx) {
}
void sub_080771C8(ItemBehavior* this, u32 idx) {
static const u8 gUnk_0811BE14[] = {
0x1,
0x12,
};
Entity* object;
UpdateItemAnim(this);
@@ -90,6 +96,12 @@ void sub_080771C8(ItemBehavior* this, u32 idx) {
}
void sub_080772A8(ItemBehavior* this, u32 idx) {
static const s16 gUnk_0811BE16[] = {
0,
0xc0,
0x100,
0x180,
};
Entity* effect;
if (((this->field_0x5[9] & 8) != 0) && sub_08077F10(this)) {
@@ -161,4 +173,23 @@ void sub_08077448(ItemBehavior* this, u32 idx) {
}
}
ASM_FUNC("asm/non_matching/itemMoleMitts/sub_080774A0.inc", s32 sub_080774A0(void))
s32 sub_080774A0(void) {
static const s8 gUnk_0811BE1E[] = { 0, -13, 13, 0, 0, 16, -13, 0, 0, 0 };
u32 iVar2;
u32 uVar3;
uVar3 = COORD_TO_TILE_OFFSET((&gPlayerEntity), -gUnk_0811BE1E[gPlayerEntity.animationState & 6],
-gUnk_0811BE1E[(gPlayerEntity.animationState & 6) + 1]);
iVar2 = sub_080B1B44(uVar3, gPlayerEntity.collisionLayer);
if (iVar2 > 0x16)
return 0;
if (iVar2 < 0xf)
return 0;
if (sub_080B1AE0(uVar3, gPlayerEntity.collisionLayer) != 0x56) {
return 1;
} else {
return 0x56;
}
}
+6 -3
View File
@@ -2,13 +2,16 @@
#include "sound.h"
#include "functions.h"
extern void (*const gOcarinaStates[4])(ItemBehavior*, u32);
extern void ResetPlayerVelocity(void);
extern void CreateBird(void);
void OcarinaUse(ItemBehavior*, u32);
void OcarinaUpdate(ItemBehavior*, u32);
void ItemOcarina(ItemBehavior* this, u32 idx) {
static void (*const gOcarinaStates[])(ItemBehavior*, u32) = {
OcarinaUse,
OcarinaUpdate,
};
gOcarinaStates[this->stateID](this, idx);
gPlayerEntity.field_0x7a.HWORD += 1;
}
+7 -2
View File
@@ -3,10 +3,15 @@
#include "item.h"
#include "functions.h"
extern void (*const gUnk_0811BDE0[])(ItemBehavior* beh, u32);
void sub_08076C98(ItemBehavior*, u32);
void sub_08076CBC(ItemBehavior*, u32);
void ItemPacciCane(ItemBehavior* beh, u32 idx) {
gUnk_0811BDE0[beh->stateID](beh, idx);
static void (*const stateFuncs[])(ItemBehavior * beh, u32) = {
sub_08076C98,
sub_08076CBC,
};
stateFuncs[beh->stateID](beh, idx);
}
void sub_08076C98(ItemBehavior* beh, u32 idx) {
+9 -2
View File
@@ -4,10 +4,17 @@
#include "sound.h"
#include "functions.h"
extern void (*const gUnk_0811BDE8[])(ItemBehavior* beh, u32);
void sub_08076D04(ItemBehavior*, u32);
void sub_08076D34(ItemBehavior*, u32);
void sub_08076D94(ItemBehavior*, u32);
void ItemShield(ItemBehavior* beh, u32 idx) {
gUnk_0811BDE8[beh->stateID](beh, idx);
static void (*const stateFuncs[])(ItemBehavior*, u32) = {
sub_08076D04,
sub_08076D34,
sub_08076D94,
};
stateFuncs[beh->stateID](beh, idx);
}
void sub_08076D04(ItemBehavior* beh, u32 idx) {
+12 -5
View File
@@ -4,18 +4,25 @@
#include "object.h"
#include "playeritem.h"
extern void (*const gUnk_0811BD44[])(ItemBehavior*, u32);
void sub_080759B8(ItemBehavior*, u32);
void sub_080754B8(ItemBehavior*, u32);
void sub_08075898(ItemBehavior*, u32);
void sub_08075580(ItemBehavior*, u32);
void sub_08075694(ItemBehavior* this, u32 idx);
void sub_08075338(ItemBehavior*, u32);
void sub_080755F0(ItemBehavior*, u32);
void sub_0807564C(ItemBehavior*, u32);
void sub_08075738(ItemBehavior*, u32);
void sub_080758B0(ItemBehavior*, u32);
void sub_08075900(ItemBehavior*, u32);
void sub_08075694(ItemBehavior*, u32);
void ItemSword(ItemBehavior* this, u32 idx) {
static void (*const stateFuncs[])(ItemBehavior*, u32) = {
sub_08075338, sub_080754B8, sub_080755F0, sub_0807564C, sub_08075738,
sub_08075580, sub_08075898, sub_080758B0, sub_08075900,
};
gPlayerState.framestate = PL_STATE_SWORD;
gUnk_0811BD44[this->stateID](this, idx);
stateFuncs[this->stateID](this, idx);
}
void sub_08075338(ItemBehavior* this, u32 idx) {
+10 -4
View File
@@ -2,16 +2,22 @@
#include "functions.h"
#include "sound.h"
extern void (*const gUnk_0811BDB4[])(ItemBehavior*, u32);
u32 sub_08077F64(ItemBehavior* arg0, u32 idx);
u32 sub_080789A8(void);
void sub_080762C4(ItemBehavior*, Entity*, u8, u32);
void sub_08076088(ItemBehavior*, void*, u32);
void ItemPickupCheck(ItemBehavior*, u32);
void sub_080762D8(ItemBehavior*, u32);
void sub_08076488(ItemBehavior*, u32);
void sub_08076518(ItemBehavior*, u32);
void sub_080765E0(ItemBehavior*, u32);
void sub_0807660C(ItemBehavior*, u32);
void ItemTryPickupObject(ItemBehavior* this, u32 idx) {
gUnk_0811BDB4[this->stateID](this, idx);
static void (*const stateFuncs[])(ItemBehavior*, u32) = {
ItemPickupCheck, sub_080762D8, sub_08076488, sub_08076518, sub_080765E0, sub_0807660C,
};
stateFuncs[this->stateID](this, idx);
}
void ItemPickupCheck(ItemBehavior* this, u32 idx) {
+4 -2
View File
@@ -3,7 +3,9 @@
extern void sub_0806FFBC(Entity*, u32, u32, u32);
extern SpriteLoadData gUnk_081146D0;
static const SpriteLoadData gUnk_081146D0[] = {
{ 0, 0x61, 0x4 }, { 0x800, 0x61, 0x4 }, { 0x1000, 0x61, 0x4 }, { 0x1800, 0x61, 0x4 }, { 0, 0, 0 },
};
void NPC58(Entity* this) {
s32 sVar1;
@@ -12,7 +14,7 @@ void NPC58(Entity* this) {
Entity* entity;
if (this->action == 0) {
if (LoadExtraSpriteData(this, &gUnk_081146D0) == 0) {
if (LoadExtraSpriteData(this, gUnk_081146D0) == 0) {
return;
}
this->action += 1;
+6 -4
View File
@@ -13,8 +13,6 @@ void sub_0806EABC(Entity* this);
void sub_0806EABC(Entity* this, u32 param);
#endif
extern Font gUnk_081146B8;
void Phonograph(Entity* this) {
if (this->action == 0) {
this->action += 1;
@@ -87,7 +85,7 @@ void sub_0806E964(Entity* this, ScriptExecutionContext* context) {
this->field_0x6a.HWORD = this->field_0x68.HWORD;
field_0x68 = (s16)this->field_0x68.HWORD * 4;
ptr2++;
this->field_0x6c.HWORD = *(s16*)((((int)ptr2 + field_0x68)));
this->field_0x6c.HWORD = *(s16*)((((s32)ptr2 + field_0x68)));
} else {
SoundReq(SONG_STOP_ALL);
this->field_0x6a.HWORD = 0;
@@ -169,7 +167,7 @@ void sub_0806E964(Entity* this, ScriptExecutionContext* context) {
this->field_0x6a.HWORD = this->field_0x68.HWORD;
field_0x68 = (s16)this->field_0x68.HWORD * 4;
ptr2++;
this->field_0x6c.HWORD = *(s16*)((((int)ptr2 + field_0x68)));
this->field_0x6c.HWORD = *(s16*)((((s32)ptr2 + field_0x68)));
} else {
SoundReq(SONG_STOP_ALL);
this->field_0x6a.HWORD = 0;
@@ -187,6 +185,10 @@ void sub_0806E964(Entity* this, ScriptExecutionContext* context) {
}
#endif
const static Font gUnk_081146B8 = {
(u16*)0x2034fce, (void*)0x0600d000, (void*)0x2000d00, 0, 0xf080, 0xd0, 1, 1, 1, 1, 0, 0, 0, 1, 0
};
#ifdef EU
void sub_0806EABC(Entity* this) {
sub_08050384();
+15 -6
View File
@@ -1,10 +1,18 @@
#include "object.h"
#include "functions.h"
extern void (*const gUnk_0811EE38[])(Entity*);
void sub_08081AE0(Entity*);
void sub_08081B84(Entity*);
void sub_08081BAC(Entity*);
void sub_08081BE0(Entity*);
void sub_08081C30(Entity*);
void sub_08081C98(Entity*);
void Button(Entity* this) {
gUnk_0811EE38[this->action](this);
static void (*const actionFuncs[])(Entity*) = {
sub_08081AE0, sub_08081B84, sub_08081BAC, sub_08081BE0, sub_08081C30, sub_08081C98,
};
actionFuncs[this->action](this);
}
extern u32 sub_08081E3C(Entity*);
@@ -172,11 +180,12 @@ u32 sub_08081E0C(Entity* this) {
}
}
extern u16 gUnk_0811EE50[];
u32 sub_08081E3C(Entity* this) {
u16* tmp1;
int tmp2;
static const u16 gUnk_0811EE50[] = {
0x77, 0x78, 0x79, 0x7a, 0, 0,
};
const u16* tmp1;
s32 tmp2;
tmp2 = GetTileType(this->field_0x74.HWORD, this->collisionLayer);
tmp1 = gUnk_0811EE50;
do {
+59 -8
View File
@@ -19,13 +19,32 @@ void sub_0808153C(Entity*);
void sub_08081598(Entity*);
void sub_080813BC(Entity*);
void sub_080810FC(Entity*);
void sub_08080F20(Entity*);
void sub_080811EC(Entity*);
void sub_0808122C(Entity*);
void sub_08081328(Entity*);
void sub_0808136C(Entity*);
void sub_080810A8(Entity*);
void sub_080810FC(Entity*);
void sub_08081150(Entity*);
void sub_08081134(Entity*);
void sub_08081188(Entity*);
void sub_080811AC(Entity*);
void sub_080811C8(Entity*);
void sub_080811D8(Entity*);
void sub_08081248(Entity*);
void sub_0808126C(Entity*);
void sub_0808127C(Entity*);
void nullsub_113(Entity*);
void sub_080812A0(Entity*);
void sub_080812A8(Entity*);
void sub_080812E8(Entity*);
void nullsub_510(Entity*);
void sub_080813D4(Entity*);
void sub_080813E8(Entity*);
void sub_080813F0(Entity*);
bool32 CheckShouldPlayItemGetCutscene(Entity*);
extern void (*const gUnk_0811E7D4[])(Entity*);
extern void (*const gUnk_0811E7E8[])(Entity*);
extern void (*const gUnk_0811E814[])(Entity*);
extern void (*const gUnk_0811E840[])(Entity*);
typedef struct {
u8 unk0[2];
u16 sfx;
@@ -33,9 +52,10 @@ typedef struct {
u8 unk5[3];
} Unk_0811E84C;
extern const Unk_0811E84C gUnk_0811E84C[];
void ItemOnGround(Entity* this) {
static void (*const gUnk_0811E7D4[])(Entity*) = {
sub_08080F20, sub_080811EC, sub_0808122C, sub_08081328, sub_0808136C,
};
if (this->contactFlags & 0x80) {
switch (this->contactFlags & 0x7F) {
case 20:
@@ -75,6 +95,10 @@ void ItemOnGround(Entity* this) {
}
void sub_08080F20(Entity* this) {
static void (*const gUnk_0811E7E8[])(Entity*) = {
sub_080810A8, sub_080810FC, sub_08081150, sub_08081134, sub_08081188, sub_080810A8,
sub_080810A8, sub_080811AC, sub_080811C8, sub_080811D8, sub_080810A8,
};
if (this->field_0x86.HWORD && CheckFlags(this->field_0x86.HWORD)) {
DeleteThisEntity();
}
@@ -215,6 +239,10 @@ void sub_080811EC(Entity* this) {
}
void sub_0808122C(Entity* this) {
static void (*const gUnk_0811E814[])(Entity*) = {
sub_08081248, sub_08081248, sub_0808126C, sub_0808127C, nullsub_113, sub_080812A0,
sub_08081248, sub_080812A8, sub_080812E8, nullsub_510, sub_08081248,
};
gUnk_0811E814[this->field_0x68.HALF.HI](this);
}
@@ -300,7 +328,12 @@ void sub_0808136C(Entity* this) {
}
void sub_080813BC(Entity* this) {
gUnk_0811E840[this->subAction](this);
static void (*const subActionFuncs[])(Entity*) = {
sub_080813D4,
sub_080813E8,
sub_080813F0,
};
subActionFuncs[this->subAction](this);
}
void sub_080813D4(Entity* this) {
@@ -342,6 +375,24 @@ bool32 CheckShouldPlayItemGetCutscene(Entity* this) {
return ((gItemMetaData[this->type].unk3 & 0x2) || !GetInventoryValue(this->type));
}
static const Unk_0811E84C gUnk_0811E84C[118] = {
[ITEM_SHELLS] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } },
[ITEM_DUNGEON_MAP] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } },
[ITEM_COMPASS] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } },
[ITEM_BIG_KEY] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } },
[ITEM_SMALL_KEY] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } },
[ITEM_RUPEE1] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } },
[ITEM_RUPEE5] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } },
[ITEM_RUPEE20] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } },
[ITEM_RUPEE50] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } },
[ITEM_RUPEE100] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } },
[ITEM_RUPEE200] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } },
[ITEM_KINSTONE] = { { 0x0, 0x0 }, SFX_RUPEE_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } },
[ITEM_BOMBS5] = { { 0x0, 0x0 }, SFX_HEART_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } },
[ITEM_ARROWS5] = { { 0x0, 0x0 }, SFX_HEART_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } },
[ITEM_HEART] = { { 0x0, 0x0 }, SFX_HEART_BOUNCE, 0x1, { 0x0, 0x0, 0x0 } },
};
u8 sub_0808147C(u32 arg0) {
const Unk_0811E84C* var0 = &gUnk_0811E84C[arg0];
return var0->unk4;
+31 -7
View File
@@ -11,16 +11,34 @@
void sub_08082824(Entity*);
static void sub_08082850(Entity*, Entity*);
void sub_08082608(Entity*);
extern void (*const gUnk_0811F090[])(Entity*);
extern void (*const gUnk_0811F0A8[])(Entity*);
extern void (*const gUnk_0811F0C4[])(Entity*);
void sub_0808222C(Entity*);
void sub_08082310(Entity*);
void sub_080824F8(Entity*);
void sub_080826E4(Entity*);
void sub_08082614(Entity*);
void sub_08082824(Entity*);
void sub_08082510(Entity*);
void nullsub_511(Entity*);
void sub_08082588(Entity*);
void sub_0808259C(Entity*);
void sub_080825E8(Entity*);
void sub_080825F0(Entity*);
void sub_08082608(Entity*);
void sub_08082818(Entity*);
void nullsub_512(Entity*);
void sub_080827F8(Entity*);
void sub_08082778(Entity*);
void sub_0808270C(Entity*);
void sub_080826FC(Entity*);
extern void RegisterCarryEntity(Entity*);
extern void sub_08016A6C(Entity*);
void Pot(Entity* this) {
gUnk_0811F090[this->action](this);
static void (*const actionFuncs[])(Entity*) = {
sub_0808222C, sub_08082310, sub_080824F8, sub_080826E4, sub_08082614, sub_08082824,
};
actionFuncs[this->action](this);
this->contactFlags = 0;
}
@@ -111,7 +129,10 @@ void sub_08082310(Entity* this) {
}
void sub_080824F8(Entity* this) {
gUnk_0811F0A8[this->subAction](this);
static void (*const subActionFuncs[])(Entity*) = {
sub_08082510, nullsub_511, sub_08082588, sub_0808259C, sub_080825E8, sub_080825F0, sub_08082608,
};
subActionFuncs[this->subAction](this);
}
void sub_08082510(Entity* this) {
@@ -200,7 +221,10 @@ void sub_08082614(Entity* this) {
}
void sub_080826E4(Entity* this) {
gUnk_0811F0C4[this->subAction](this);
static void (*const subActionFuncs[])(Entity*) = {
sub_080826FC, sub_0808270C, sub_08082778, sub_080827F8, nullsub_512, sub_08082818,
};
subActionFuncs[this->subAction](this);
}
void sub_080826FC(Entity* this) {
+16 -7
View File
@@ -6,17 +6,24 @@
#include "flags.h"
#include "functions.h"
extern void sub_08085394(Entity*);
extern void sub_0808543C(Entity*);
extern u32 sub_080854A8(Entity*);
extern void (*const gUnk_081205D0[])(Entity*);
void sub_08085394(Entity*);
void sub_0808543C(Entity*);
void sub_080851AC(Entity*);
void sub_08085264(Entity*);
void sub_080852B4(Entity*);
void sub_08085308(Entity*);
u32 sub_080854A8(Entity*);
extern s8 gUnk_080B4488[][2];
extern u16 gUnk_081205E0[];
void Railtrack(Entity* this) {
gUnk_081205D0[this->action](this);
static void (*const actionFuncs[])(Entity*) = {
sub_080851AC,
sub_08085264,
sub_080852B4,
sub_08085308,
};
actionFuncs[this->action](this);
}
void sub_080851AC(Entity* this) {
@@ -101,6 +108,8 @@ void sub_08085308(Entity* this) {
}
}
static const u16 gUnk_081205E0[] = { 0x4018, 0x4019 };
void sub_08085394(Entity* this) {
u32 uVar1;
u16* layerData;
+132 -25
View File
@@ -51,11 +51,15 @@ u32 sub_08080278();
void sub_08080C80(u32*);
void sub_08080368();
void sub_08080B60(u8*);
bool32 sub_08080794(const Transition* transition, u32 param_2, u32 param_3, u32 param_4);
bool32 sub_08080808(const Transition* transition, u32 param_2, u32 param_3, u32 param_4);
void sub_080808D8(s32);
void sub_080808E4(s32);
void sub_08080904(s32);
void sub_08080910(s32);
extern u8 gMapDataTopSpecial[];
extern const void (*const gUnk_0811E7C4[])(int);
void UpdateScroll(void) {
static void (*const gUnk_0811E768[])(RoomControls*) = {
sub_0807FC64, sub_0807FC7C, sub_0807FDB0, NULL, sub_0807FEF0, sub_0807FF54,
@@ -100,7 +104,7 @@ void sub_0807FDE4(RoomControls* controls) {
void sub_0807FDF8(RoomControls* controls) {
u32 bVar1;
Entity* pEVar2;
int iVar3;
s32 iVar3;
gUpdateVisibleTiles = 2;
controls->filler2[0]++;
@@ -214,12 +218,12 @@ void sub_0807FFE4(RoomControls* controls) {
}
void sub_08080040(RoomControls* controls) {
int iVar2;
int iVar3;
int uVar5;
int uVar6;
int iVar7;
int temp;
s32 iVar2;
s32 iVar3;
s32 uVar5;
s32 uVar6;
s32 iVar7;
s32 temp;
controls->filler2[0] -= 6;
controls->filler2[1] = (controls->filler2[0] << 1) / 3;
@@ -281,12 +285,12 @@ void sub_08080198(RoomControls* controls) {
}
void sub_080801BC(RoomControls* controls) {
int iVar2;
int iVar3;
int uVar5;
int uVar6;
int iVar7;
int temp;
s32 iVar2;
s32 iVar3;
s32 uVar5;
s32 uVar6;
s32 iVar7;
s32 temp;
controls->filler2[0] += 6;
controls->filler2[1] = (controls->filler2[0] << 1) / 3;
@@ -357,15 +361,118 @@ void ClearTilemaps(void) {
MemClear(&gMapDataTopSpecial, 0x8000);
}
ASM_FUNC("asm/non_matching/scroll/sub_080806BC.inc", bool32 sub_080806BC(u32 a, u32 b, u32 c, u32 d))
bool32 sub_080806BC(u32 param_1, u32 param_2, u32 param_3, u32 param_4) {
static bool32 (*const gUnk_0811E7AC[])(const Transition*, u32, u32, u32) = {
sub_08080794,
sub_08080808,
sub_08080794,
sub_08080808,
};
u32 uVar1;
s32 iVar2;
const Transition* puVar3;
ASM_FUNC("asm/non_matching/scroll/sub_08080734.inc", void sub_08080734())
puVar3 = (gArea.pCurrentRoomInfo->exits);
while (*(u16*)puVar3 != 0xffff) {
u32 uVar3 = *(u16*)puVar3;
if ((((1 << uVar3) & param_4) != 0) && (gUnk_0811E7AC[uVar3](puVar3, param_1, param_2, param_3))) {
DoExitTransition((const ScreenTransitionData*)puVar3);
return 1;
}
puVar3++;
}
return 0;
}
ASM_FUNC("asm/non_matching/scroll/sub_08080794.inc", void sub_08080794())
const Transition* sub_08080734(u32 param_1, u32 param_2) {
u32 warpType;
s32 iVar2;
u32 uVar4;
const Transition* puVar3;
ASM_FUNC("asm/non_matching/scroll/sub_08080808.inc", void sub_08080808())
puVar3 = (gArea.pCurrentRoomInfo->exits);
uVar4 = 10;
while (*(u16*)puVar3 != 0xffff) {
if ((((1 << *(u16*)puVar3) & uVar4) != 0) && (sub_08080808(puVar3, param_1, param_2, 0))) {
return puVar3;
}
puVar3++;
}
return NULL;
}
bool32 sub_08080794(const Transition* transition, u32 param_2, u32 param_3, u32 param_4) {
u32 bVar1;
switch (param_4) {
default:
return 0;
case 0:
if (gRoomControls.width >> 1 < param_2) {
bVar1 = 2;
} else {
bVar1 = 1;
}
break;
case 1:
if (gRoomControls.height >> 1 < param_3) {
bVar1 = 8;
} else {
bVar1 = 4;
}
break;
case 2:
if (gRoomControls.width >> 1 < param_2) {
bVar1 = 0x20;
} else {
bVar1 = 0x10;
}
break;
case 3:
if (gRoomControls.height >> 1 < param_3) {
bVar1 = 0x80;
} else {
bVar1 = 0x40;
}
break;
}
if ((transition->shape & bVar1) != 0) {
return 1;
}
return 0;
}
bool32 sub_08080808(const Transition* param_1, u32 param_2, u32 param_3, u32 param_4) {
static const u8 gUnk_0811E7BC[] = { 6, 6, 6, 14, 14, 6, 22, 6 };
const u8* ptr;
u32 temp;
u32 temp2;
u32 temp3;
u32 temp4;
ptr = &gUnk_0811E7BC[param_1->shape * 2];
temp = ptr[0];
temp2 = param_2 - param_1->startX;
if ((temp2 + temp <= ptr[0] * 2)) {
temp3 = ptr[1];
temp4 = param_3 - param_1->startY;
if (temp4 + temp3 <= ptr[1] * 2) {
return TRUE;
} else {
return FALSE;
}
} else {
return FALSE;
}
}
void DoExitTransition(const ScreenTransitionData* data) {
static void (*const gUnk_0811E7C4[])(s32) = {
sub_080808D8,
sub_080808E4,
sub_08080904,
sub_08080910,
};
PlayerRoomStatus* status;
gRoomTransition.transitioningOut = 1;
status = &gRoomTransition.player_status;
@@ -390,11 +497,11 @@ void DoExitTransition(const ScreenTransitionData* data) {
gUnk_0811E7C4[data->type](data->field_0xa);
}
void sub_080808D8(void) {
void sub_080808D8(s32 param_1) {
gRoomTransition.type = TRANSITION_DEFAULT;
}
void sub_080808E4(void) {
void sub_080808E4(s32 param_1) {
if (CheckAreaOverworld(gRoomTransition.player_status.area_next)) {
gRoomTransition.type = TRANSITION_DEFAULT;
} else {
@@ -402,11 +509,11 @@ void sub_080808E4(void) {
}
}
void sub_08080904(void) {
void sub_08080904(s32 param_1) {
gRoomTransition.type = TRANSITION_CUT;
}
void sub_08080910(void) {
void sub_08080910(s32 param_1) {
gRoomTransition.type = TRANSITION_CUT;
}
@@ -469,8 +576,8 @@ void sub_08080974(u32 arg0, u32 arg1) {
}
void sub_080809D4(void) {
int x, y;
int var1, var0;
s32 x, y;
s32 var1, var0;
RoomControls* roomControls = &gRoomControls;
roomControls->scroll_flags &= ~4;
+17 -17
View File
@@ -33,7 +33,7 @@ void sub_0805F440(Token*, u8*);
u32 sub_0805F6A4(Token*, WStruct*);
u32 GetCharacter(Token* tok);
u32 GetFontStrWith(Token*, u32);
int sub_0805F67C(short*, int, int);
s32 sub_0805F67C(short*, s32, s32);
void sub_0805F918(u32, u32, void*);
bool32 sub_0805F5CC(Font*, Token*, WStruct*);
void sub_0805EEB4(Token*, u32);
@@ -64,7 +64,7 @@ void sub_0805EEB4(Token* token, u32 textIndex) {
u32 langIndex;
u32* puVar2;
u8* puVar5;
int iVar3;
s32 iVar3;
u32 uVar4;
u32 uVar6;
u32 uVar7;
@@ -76,7 +76,7 @@ void sub_0805EEB4(Token* token, u32 textIndex) {
}
puVar2 = gTranslations[langIndex];
iVar3 = puVar2[(u8)(textIndex >> 8)];
puVar2 = (u32*)((int)puVar2 + iVar3);
puVar2 = (u32*)((s32)puVar2 + iVar3);
iVar3 = puVar2[(u8)textIndex];
uVar6 = *(gTranslations[langIndex]) >> 2;
uVar7 = *puVar2 >> 2;
@@ -84,7 +84,7 @@ void sub_0805EEB4(Token* token, u32 textIndex) {
if (((token->textIndex >> 8) >= uVar6) || ((u8)token->textIndex >= uVar7)) {
uVar4 = 1;
} else {
if (*(char*)((int)puVar2 + iVar3) == 0) {
if (*(char*)((s32)puVar2 + iVar3) == 0) {
uVar4 = 2;
}
}
@@ -95,7 +95,7 @@ void sub_0805EEB4(Token* token, u32 textIndex) {
iVar3 = 0;
break;
}
puVar2 = (u32*)((int)puVar2 + iVar3);
puVar2 = (u32*)((s32)puVar2 + iVar3);
sub_0805EF40(token, (u8*)puVar2);
}
@@ -134,7 +134,7 @@ u32 GetCharacter(Token* token) {
u32 code;
u32 uVar6;
u8** ppuVar7;
int iVar8;
s32 iVar8;
do {
code = sub_0805EF8C(token);
@@ -358,8 +358,8 @@ u32 GetFontStrWith(Token* param_1, u32 param_2) {
u32 rv;
u32 r9;
Token token;
int local_28;
int local_24;
s32 local_28;
s32 local_24;
MemCopy(param_1, &token, sizeof(Token));
local_24 = 0;
@@ -430,7 +430,7 @@ void sub_0805F440(Token* param_1, u8* param_2) {
}
}
u32 sub_0805F46C(u32 param_1, Font* param_2) {
u32 sub_0805F46C(u32 param_1, const Font* param_2) {
u32 uVar1;
WStruct* pWVar4;
u32 uVar5;
@@ -457,9 +457,9 @@ u32 sub_0805F46C(u32 param_1, Font* param_2) {
pWVar4->bgColor = font.fill_type;
if (font.draw_border) {
sub_0805F918(font.border_type, font.fill_type, font.gfx_dest);
font.gfx_dest = (void*)((int)font.gfx_dest + 0xe0);
font.gfx_dest = (void*)((s32)font.gfx_dest + 0xe0);
fontStr = GetFontStrWith(&token, 1);
iVar10 = (fontStr >> 0x18) * (u32)font._16 + ((u8)((int)fontStr >> 0x10) << 1);
iVar10 = (fontStr >> 0x18) * (u32)font._16 + ((u8)((s32)fontStr >> 0x10) << 1);
uVar8 = (u16)fontStr;
temp3 = uVar8;
if (font.width < (s32)temp3) {
@@ -487,7 +487,7 @@ u32 sub_0805F46C(u32 param_1, Font* param_2) {
while (iVar10-- > 0) {
puVar9 += 0x20;
puVar6 = puVar9;
for (uVar5 = uVar8; (int)uVar5-- > 0;) {
for (uVar5 = uVar8; (s32)uVar5-- > 0;) {
*puVar6++ = param_1;
}
}
@@ -502,7 +502,7 @@ u32 sub_0805F46C(u32 param_1, Font* param_2) {
bool32 sub_0805F5CC(Font* param_1, Token* param_2, WStruct* param_3) {
u16 uVar2;
u32 uVar3;
int iVar4;
s32 iVar4;
u16* puVar5;
u32 fontStr;
@@ -513,7 +513,7 @@ bool32 sub_0805F5CC(Font* param_1, Token* param_2, WStruct* param_3) {
puVar5 = (u16*)sub_0805F6A4(param_2, param_3);
if (puVar5) {
iVar4 = (int)(param_3->unk6 + 7) / 8;
iVar4 = (s32)(param_3->unk6 + 7) / 8;
puVar5 = param_1->dest;
if (param_1->right_align) {
puVar5 -= (iVar4 + 1U) >> 1;
@@ -522,7 +522,7 @@ bool32 sub_0805F5CC(Font* param_1, Token* param_2, WStruct* param_3) {
param_1->dest += 0x40;
iVar4 *= 0x40;
MemCopy(param_1->buffer_loc, param_1->gfx_dest, iVar4);
param_1->gfx_dest = (void*)((int)param_1->gfx_dest + iVar4);
param_1->gfx_dest = (void*)((s32)param_1->gfx_dest + iVar4);
} else {
if (param_2->code == 10) {
param_1->dest += param_1->_16 * 0x20;
@@ -531,7 +531,7 @@ bool32 sub_0805F5CC(Font* param_1, Token* param_2, WStruct* param_3) {
return param_2->code > 0;
}
int sub_0805F67C(short* param_1, int param_2, int param_3) {
s32 sub_0805F67C(short* param_1, s32 param_2, s32 param_3) {
for (param_3--; param_3 != -1; param_3--) {
param_1[0] = param_2++;
param_1[0x20] = param_2++;
@@ -543,7 +543,7 @@ int sub_0805F67C(short* param_1, int param_2, int param_3) {
u32 sub_0805F6A4(Token* param_1, WStruct* param_2) {
u32 uVar1;
u32 uVar3;
int iVar4;
s32 iVar4;
u32 r7;
iVar4 = 0;