finish main.c

This commit is contained in:
theo3 2021-01-31 11:23:42 -08:00
parent b9e07c1202
commit ced13c2c8d
26 changed files with 268 additions and 421 deletions

View File

@ -38,7 +38,7 @@ MID_BUILDDIR = $(OBJ_DIR)/$(MID_SUBDIR)
ASFLAGS := -mcpu=arm7tdmi --defsym $(GAME_VERSION)=1 --defsym REVISION=$(REVISION) --defsym $(GAME_LANGUAGE)=1
CC1 := tools/agbcc/bin/agbcc
override CFLAGS += -Wimplicit -Wparentheses -Werror -O2
override CFLAGS += -Wimplicit -Wparentheses -Werror -Wno-multichar -O2
# -fhex-asm
ifeq ($(DINFO),1)

View File

@ -1,369 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_080560B8
sub_080560B8: @ 0x080560B8
push {r4, lr}
bl sub_08056134
cmp r0, #0
bne _080560F8
movs r0, #0x80
lsls r0, r0, #0x12
bl sub_0807CF30
adds r1, r0, #0
movs r0, #1
rsbs r0, r0, #0
cmp r1, r0
blt _080560E4
cmp r1, #0
ble _080560E4
cmp r1, #1
bne _080560E4
bl sub_08056134
cmp r0, #0
bne _080560F8
_080560E4:
ldr r0, _08056128 @ =gUnk_08100CD4
movs r4, #0x80
lsls r4, r4, #0x12
adds r1, r4, #0
movs r2, #0x10
bl _DmaCopy
adds r0, r4, #0
bl sub_0807CF10
_080560F8:
ldr r2, _0805612C @ =gUnk_02000010
ldr r1, [r2]
ldr r0, _08056130 @ =0x4D435A33
eors r1, r0
rsbs r0, r1, #0
orrs r0, r1
lsrs r0, r0, #0x1f
ldrb r1, [r2, #4]
cmp r1, #0
beq _08056112
cmp r1, #0xc1
beq _08056112
movs r0, #1
_08056112:
cmp r0, #0
beq _08056124
ldr r4, _0805612C @ =gUnk_02000010
adds r0, r4, #0
movs r1, #0x20
bl _DmaZero
ldr r0, _08056130 @ =0x4D435A33
str r0, [r4]
_08056124:
pop {r4, pc}
.align 2, 0
_08056128: .4byte gUnk_08100CD4
_0805612C: .4byte gUnk_02000010
_08056130: .4byte 0x4D435A33
thumb_func_start sub_08056134
sub_08056134: @ 0x08056134
push {lr}
movs r2, #0x80
lsls r2, r2, #0x12
ldr r1, [r2]
ldr r0, _08056164 @ =0x4D435A33
cmp r1, r0
bne _08056160
ldrb r0, [r2, #4]
cmp r0, #2
bhi _08056160
ldrb r0, [r2, #5]
cmp r0, #2
bhi _08056160
ldrb r0, [r2, #6]
cmp r0, #2
bhi _08056160
ldrb r0, [r2, #7]
cmp r0, #1
bne _08056160
ldrb r0, [r2, #0xe]
cmp r0, #0
beq _08056168
_08056160:
movs r0, #0
b _0805616A
.align 2, 0
_08056164: .4byte 0x4D435A33
_08056168:
movs r0, #1
_0805616A:
pop {pc}
thumb_func_start sub_0805616C
sub_0805616C: @ 0x0805616C
push {lr}
ldr r0, _080561E8 @ =0x80040000
bl PlaySFX
ldr r0, _080561EC @ =gScreen
adds r3, r0, #0
adds r3, #0x6c
ldrb r2, [r3]
adds r0, #0x6d
movs r1, #0
strb r2, [r0]
strb r1, [r3]
ldr r1, _080561F0 @ =0x040000B0
ldrh r2, [r1, #0xa]
ldr r0, _080561F4 @ =0x0000C5FF
ands r0, r2
strh r0, [r1, #0xa]
ldrh r2, [r1, #0xa]
ldr r0, _080561F8 @ =0x00007FFF
ands r0, r2
strh r0, [r1, #0xa]
ldrh r0, [r1, #0xa]
ldr r0, [r1, #8]
movs r2, #0x80
lsls r2, r2, #0x18
cmp r0, #0
bge _080561AA
_080561A2:
ldr r0, [r1, #8]
ands r0, r2
cmp r0, #0
bne _080561A2
_080561AA:
ldr r2, _080561FC @ =0x040000BC
ldr r0, [r2, #8]
movs r1, #0x80
lsls r1, r1, #0x18
cmp r0, #0
bge _080561BE
_080561B6:
ldr r0, [r2, #8]
ands r0, r1
cmp r0, #0
bne _080561B6
_080561BE:
ldr r2, _08056200 @ =0x040000C8
ldr r0, [r2, #8]
movs r1, #0x80
lsls r1, r1, #0x18
cmp r0, #0
bge _080561D2
_080561CA:
ldr r0, [r2, #8]
ands r0, r1
cmp r0, #0
bne _080561CA
_080561D2:
ldr r2, _08056204 @ =0x040000D4
ldr r0, [r2, #8]
movs r1, #0x80
lsls r1, r1, #0x18
cmp r0, #0
bge _080561E6
_080561DE:
ldr r0, [r2, #8]
ands r0, r1
cmp r0, #0
bne _080561DE
_080561E6:
pop {pc}
.align 2, 0
_080561E8: .4byte 0x80040000
_080561EC: .4byte gScreen
_080561F0: .4byte 0x040000B0
_080561F4: .4byte 0x0000C5FF
_080561F8: .4byte 0x00007FFF
_080561FC: .4byte 0x040000BC
_08056200: .4byte 0x040000C8
_08056204: .4byte 0x040000D4
thumb_func_start sub_08056208
sub_08056208: @ 0x08056208
push {lr}
ldr r0, _08056224 @ =0x80060000
bl PlaySFX
ldr r0, _08056228 @ =gScreen
adds r3, r0, #0
adds r3, #0x6d
ldrb r2, [r3]
adds r0, #0x6c
movs r1, #0
strb r2, [r0]
strb r1, [r3]
pop {pc}
.align 2, 0
_08056224: .4byte 0x80060000
_08056228: .4byte gScreen
thumb_func_start sub_0805622C
sub_0805622C: @ 0x0805622C
ldr r3, _08056248 @ =gScreen
str r0, [r3, #0x70]
str r1, [r3, #0x74]
str r2, [r3, #0x78]
adds r3, #0x6c
movs r2, #1
movs r0, #1
strb r0, [r3]
ldr r1, _0805624C @ =gUnk_03003DE4
ldrb r0, [r1]
eors r0, r2
strb r0, [r1]
bx lr
.align 2, 0
_08056248: .4byte gScreen
_0805624C: .4byte gUnk_03003DE4
thumb_func_start sub_08056250
sub_08056250: @ 0x08056250
ldr r0, _0805625C @ =gScreen
adds r0, #0x6c
movs r1, #0
strb r1, [r0]
bx lr
.align 2, 0
_0805625C: .4byte gScreen
thumb_func_start sub_08056260
sub_08056260: @ 0x08056260
push {r4, r5, r6, lr}
mov r6, sb
mov r5, r8
push {r5, r6}
movs r1, #0x80
lsls r1, r1, #0x13
movs r0, #0x80
strh r0, [r1]
ldr r1, _080562B8 @ =0x04000132
ldr r2, _080562BC @ =0x00008304
adds r0, r2, #0
strh r0, [r1]
ldr r6, _080562C0 @ =0x04000208
movs r0, #0
mov r8, r0
strh r0, [r6]
ldr r5, _080562C4 @ =0x04000200
ldrh r4, [r5]
movs r1, #0xc0
lsls r1, r1, #6
adds r0, r1, #0
strh r0, [r5]
movs r2, #1
mov sb, r2
strh r2, [r6]
bl SoundBiasReset
svc #3
bl SoundBiasSet
mov r0, r8
strh r0, [r6]
strh r4, [r5]
mov r1, sb
strh r1, [r6]
ldr r0, _080562C8 @ =gUnk_03001000
ldrb r1, [r0, #1]
mov r2, r8
strb r2, [r0, #1]
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, pc}
.align 2, 0
_080562B8: .4byte 0x04000132
_080562BC: .4byte 0x00008304
_080562C0: .4byte 0x04000208
_080562C4: .4byte 0x04000200
_080562C8: .4byte gUnk_03001000
thumb_func_start sub_080562CC
sub_080562CC: @ 0x080562CC
push {r4, r5, r6, lr}
ldr r6, _080562FC @ =gRoomControls
movs r4, #0xa
ldrsh r5, [r6, r4]
ldrh r4, [r6, #6]
subs r5, r5, r4
subs r5, r5, r0
adds r5, #0xf0
movs r4, #0xc
ldrsh r0, [r6, r4]
ldrh r4, [r6, #8]
subs r0, r0, r4
subs r0, r0, r1
adds r0, #0xa0
adds r2, #0xf0
adds r3, #0xa0
movs r1, #0
cmp r5, r2
bhs _080562F8
cmp r0, r3
bhs _080562F8
movs r1, #1
_080562F8:
adds r0, r1, #0
pop {r4, r5, r6, pc}
.align 2, 0
_080562FC: .4byte gRoomControls
thumb_func_start sub_08056300
sub_08056300: @ 0x08056300
push {r4, lr}
adds r4, r0, #0
b _0805631C
_08056306:
ldrh r0, [r4, #2]
ldrh r1, [r4, #4]
ldrh r2, [r4, #6]
ldrh r3, [r4, #8]
bl sub_080562CC
cmp r0, #0
beq _0805631A
ldrh r0, [r4]
b _08056324
_0805631A:
adds r4, #0xa
_0805631C:
ldrh r0, [r4]
cmp r0, #0xff
bne _08056306
movs r0, #0xff
_08056324:
pop {r4, pc}
.align 2, 0
thumb_func_start NulledItem
NulledItem: @ 0x08056328
push {lr}
bl DeleteThisEntity
pop {pc}
thumb_func_start sub_08056330
sub_08056330: @ 0x08056330
push {lr}
bl DeleteThisEntity
pop {pc}
thumb_func_start sub_08056338
sub_08056338: @ 0x08056338
push {lr}
movs r2, #1
rsbs r2, r2, #0
ldr r0, _08056358 @ =gTextBox
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
cmp r0, #0
bne _08056354
ldr r1, _0805635C @ =gUnk_02000040
ldrb r0, [r1]
cmp r0, #3
bne _08056354
ldrb r2, [r1, #1]
_08056354:
adds r0, r2, #0
pop {pc}
.align 2, 0
_08056358: .4byte gTextBox
_0805635C: .4byte gUnk_02000040

View File

@ -0,0 +1,66 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
push {r4, lr}
bl sub_08056134
cmp r0, #0
bne _080560F8
movs r0, #0x80
lsls r0, r0, #0x12
bl sub_0807CF30
adds r1, r0, #0
movs r0, #1
rsbs r0, r0, #0
cmp r1, r0
blt _080560E4
cmp r1, #0
ble _080560E4
cmp r1, #1
bne _080560E4
bl sub_08056134
cmp r0, #0
bne _080560F8
_080560E4:
ldr r0, _08056128 @ =sDefaultSettings
movs r4, #0x80
lsls r4, r4, #0x12
adds r1, r4, #0
movs r2, #0x10
bl _DmaCopy
adds r0, r4, #0
bl sub_0807CF10
_080560F8:
ldr r2, _0805612C @ =gUnk_02000010
ldr r1, [r2]
ldr r0, _08056130 @ =0x4D435A33
eors r1, r0
rsbs r0, r1, #0
orrs r0, r1
lsrs r0, r0, #0x1f
ldrb r1, [r2, #4]
cmp r1, #0
beq _08056112
cmp r1, #0xc1
beq _08056112
movs r0, #1
_08056112:
cmp r0, #0
beq _08056124
ldr r4, _0805612C @ =gUnk_02000010
adds r0, r4, #0
movs r1, #0x20
bl _DmaZero
ldr r0, _08056130 @ =0x4D435A33
str r0, [r4]
_08056124:
pop {r4, pc}
.align 2, 0
_08056128: .4byte sDefaultSettings
_0805612C: .4byte gUnk_02000010
_08056130: .4byte 0x4D435A33
.syntax divided

View File

@ -1,8 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08100CD4:: @ 08100CD4
.incbin "baserom.gba", 0x100CD4, 0x0000010

View File

@ -321,4 +321,6 @@ extern void sub_08008790(Entity*, u32);
extern u32 CheckIsDungeon();
extern void sub_0804ACF8();
extern void sub_08073904(Entity*);
extern u32 sub_08056134(void);
extern u32 sub_0807CF30(void*);
#endif

View File

@ -167,6 +167,12 @@
#define DmaClear16Defvars(dmaNum, dest, size) DmaClearDefvars(dmaNum, dest, size, 16)
#define DmaClear32Defvars(dmaNum, dest, size) DmaClearDefvars(dmaNum, dest, size, 32)
#define DmaWait(DmaNo) \
{ \
vu32 *(DmaCntp) = (vu32 *)REG_ADDR_DMA##DmaNo; \
while (DmaCntp[2] & (DMA_ENABLE << 16)) ; \
}
#define IntrEnable(flags) \
{ \
u16 imeTemp; \

View File

@ -11,6 +11,18 @@
#define RESET_REGS 0x80
#define RESET_ALL 0xFF
#define SystemCall(x) { asm("svc " #x); }
extern void SoundBiasReset();
extern void SoundBiasSet();
#define Stop() \
{ \
SoundBiasReset(); \
SystemCall(3); \
SoundBiasSet(); \
}
void SoftReset(u32 resetFlags);
void RegisterRamReset(u32 resetFlags);

View File

@ -47,6 +47,7 @@
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) >= (b) ? (a) : (b))
#define BOOLCAST(x) ((-x | x) >> 31)
#define static_assert(cond) extern char assertion[(cond) ? 1 : -1]
#if NON_MATCHING

View File

@ -23,6 +23,13 @@ enum {
SCREEN_DEBUG_TEXT,
};
#define GAME_LANGUAGE GAME_LANGUAGE_EN
#define SIGNATURE 'MCZ3'
#define GAME_LANGUAGE_EN 1
#define MAX_MSG_SPEED 3
#define MAX_SAVE_FILES 3
#define MAX_BRIGHTNESS 3
typedef struct {
u8 interruptFlag;
u8 field_0x1;

View File

@ -72,6 +72,11 @@ typedef struct {
/*0x08*/ BgSettings bg;
/*0x20*/ BgAffSettings affine;
/*0x38*/ BgControls controls;
/*0x6c*/ u8 _6c;
/*0x6d*/ u8 _6d;
/*0x70*/ u32 _70;
/*0x74*/ u32 _74;
/*0x78*/ u32 _78;
} Screen;
extern BgControls gBgControls;

View File

@ -6,12 +6,16 @@
#include "player.h"
typedef struct {
char header[4];
int signature;
u8 saveFileId;
u8 messageSpeed;
u8 brightnessPref;
u8 gameLanguage;
u8 _8[6];
u8 _e;
} struct_02000000;
#define gUnk_02000000 ((struct_02000000*)(0x2000000))
// extern struct_02000000 gUnk_02000000;
typedef struct {
u8 unk_00;
@ -30,11 +34,8 @@ typedef struct {
u16 field_0xa;
} struct_0807D1C4;
#define gUnk_02000000 ((struct_02000000*)(0x2000000))
// extern struct_02000000 gUnk_02000000;
typedef struct {
u8 filler0[0x4];
s32 signature;
u8 field_0x4;
u8 listenForKeyPresses;
} struct_02000010;

View File

@ -465,8 +465,7 @@ SECTIONS {
src/code_0805436C.o(.text);
asm/code_0805436C.o(.text);
src/sub_08055E08.o(.text);
src/mainLoop.o(.text);
asm/code_08055FF4.o(.text);
src/main.o(.text);
src/textbox.o(.text);
asm/code_08056418.o(.text);
src/manager/manager1.o(.text);
@ -993,8 +992,7 @@ SECTIONS {
data/data_080D3D94.o(.rodata);
data/entity_headers.o(.rodata);
data/data_080D5360.o(.rodata);
src/mainLoop.o(.rodata);
data/data_08100CD4.o(.rodata);
src/main.o(.rodata);
data/tileset_headers.o(.rodata);
data/metatile_headers.o(.rodata);
data/map_headers.o(.rodata);

View File

@ -42,7 +42,7 @@ u32 sub_0807CDE8(u32 arg0) {
temp = 1;
break;
case 2:
temp = sub_0807CF10((u8*)gUnk_02000000->header);
temp = sub_0807CF10((u8*)&gUnk_02000000->signature);
break;
}
gMenu.field_0xa = temp;

View File

@ -337,7 +337,7 @@ bool32 sub_0802C0E8(Entity* this) {
u32 ret = FALSE;
if (!sub_0806FC24(TILE(x, y), 9)) {
u32 tmp = sub_080AE4CC(ent, x, y, 0);
ret = (-tmp | tmp) >> 0x1f;
ret = BOOLCAST(tmp);
}
return ret;
}

View File

@ -1,9 +1,13 @@
#include "global.h"
#include "functions.h"
#include "structures.h"
#include "main.h"
#include "screen.h"
#include "random.h"
#include "readKeyInput.h"
extern u8 gUnk_03003DE4;
extern void sub_0804FF84(u32);
extern u16 gPaletteBuffer[];
extern void VBlankInterruptWait(void);
@ -137,3 +141,128 @@ void DoSoftReset(void) {
DisableInterruptsAndDMA();
SoftReset(RESET_ALL & ~(RESET_EWRAM | RESET_SIO_REGS));
}
const int sDefaultSettings[] = { SIGNATURE, '\1\1\1\0', 'KNIL', '\0\0\0\0' };
// single misplaced ldr
NONMATCH("asm/non_matching/sub_080560B8.inc", void sub_080560B8(void)) {
u32 temp;
u32 b;
if (!sub_08056134()) {
switch ((s32)sub_0807CF30((void*)0x2000000)) {
case 1:
if (sub_08056134())
break;
case 0:
case -1:
default:
_DmaCopy(&sDefaultSettings, (void*)0x2000000, 16);
sub_0807CF10((u8*)0x2000000);
break;
}
}
temp = gUnk_02000010.signature ^ SIGNATURE;
b = BOOLCAST(temp);
if ((gUnk_02000010.field_0x4 != 0) && (gUnk_02000010.field_0x4 != 0xc1)) {
b = 1;
}
if (b != 0) {
_DmaZero((u8*)&gUnk_02000010.signature, 0x20);
gUnk_02000010.signature = SIGNATURE;
}
}
END_NONMATCH
u32 sub_08056134(void) {
if ((gUnk_02000000->signature != SIGNATURE) || (gUnk_02000000->saveFileId >= MAX_SAVE_FILES) ||
(gUnk_02000000->messageSpeed >= MAX_MSG_SPEED) || (gUnk_02000000->brightnessPref >= MAX_BRIGHTNESS) ||
(gUnk_02000000->gameLanguage != GAME_LANGUAGE) || (gUnk_02000000->_e != 0))
return FALSE;
return TRUE;
}
void sub_0805616C() {
PlaySFX(0x80040000);
gScreen._6d = gScreen._6c;
gScreen._6c = 0;
DmaStop(0);
DmaWait(0);
DmaWait(1);
DmaWait(2);
DmaWait(3);
}
void sub_08056208() {
PlaySFX(0x80060000);
gScreen._6c = gScreen._6d;
gScreen._6d = 0;
}
void sub_0805622C(u32 a1, u32 a2, u32 a3) {
gScreen._70 = a1;
gScreen._74 = a2;
gScreen._78 = a3;
gScreen._6c = 1;
gUnk_03003DE4 ^= 1;
}
void sub_08056250() {
gScreen._6c = 0;
}
void sub_08056260(void) {
u32 temp;
Main* temp2;
REG_DISPCNT = 0x80;
REG_KEYCNT = 0x8304;
REG_IME = 0;
temp = REG_IE;
REG_IE = 0x3000;
REG_IME = 1;
Stop();
REG_IME = 0;
REG_IE = temp;
REG_IME = 1;
temp2 = &gUnk_03001000;
asm("ldrb r1, [r0, #0x1]");
temp2->field_0x1 = 0;
}
// Convert in-game AABB to screen coordinates and check if it's within the viewport
u32 sub_080562CC(u32 x0, u32 y0, u32 x1, u32 y1) {
u32 result;
u32 x = ((gRoomControls.roomScrollX - gRoomControls.roomOriginX) - x0 + DISPLAY_WIDTH);
u32 y = ((gRoomControls.roomScrollY - gRoomControls.roomOriginY) - y0 + DISPLAY_HEIGHT);
u32 a = x1 + DISPLAY_WIDTH;
u32 b = y1 + DISPLAY_HEIGHT;
if ((x < a) && (y < b))
result = TRUE;
else
result = FALSE;
return result;
}
// Iterate over array of AABBs and check if any fit on screen
u16 sub_08056300(u16* arr) {
u16* i;
for (i = arr; *i != 0xff; i += 5) {
if (sub_080562CC(i[1], i[2], i[3], i[4]) != 0)
return *i;
}
return 0xff;
}
void NulledItem() {
DeleteThisEntity();
}
void sub_08056330() {
DeleteThisEntity();
}

View File

@ -159,5 +159,5 @@ void sub_08063504(Entity* this, u32* param_2) {
u32 uVar1;
uVar1 = sub_080544DC(gUnk_0810C88C[this->entityType.parameter]);
param_2[5] = (-uVar1 | uVar1) >> 0x1F;
param_2[5] = BOOLCAST(uVar1);
}

View File

@ -154,7 +154,7 @@ void sub_080601D4(Entity* this) {
uVar2 = 2;
} else {
temp = CheckKinstoneFused(0x17);
uVar2 = (-temp | temp) >> 0x1f;
uVar2 = BOOLCAST(temp);
}
TextboxNoOverlap(gUnk_0810A354[uVar2], this);
}
@ -169,7 +169,7 @@ void sub_0806021C(Entity* this) {
// jabber nut
uVar1 = GetInventoryValue(0x5B);
uVar2 = (-uVar1 | uVar1) >> 0x1f;
uVar2 = BOOLCAST(uVar1);
// earth element
if (GetInventoryValue(0x40)) {

View File

@ -64,7 +64,7 @@ void sub_080693D0(Entity* this) {
sub_0807DD94(this, 0);
if (this->animIndex == 8) {
u32 var0 = this->field_0x82.HWORD & 0xF;
bool32 createFx65 = ((-var0) | var0) >> 0x1F; // = !var0
bool32 createFx65 = BOOLCAST(var0); // = !var0
if (this->frames.all == 1) {
this->frames.all = 0;

View File

@ -114,7 +114,7 @@ u32 sub_080696BC(Entity* this) {
}
temp = CheckGlobalFlag(0x3e);
uVar1 = (-temp | temp) >> 0x1f;
uVar1 = BOOLCAST(temp);
if (CheckGlobalFlag(0x3f)) {
uVar1 = 2;

View File

@ -68,7 +68,7 @@ void sub_08063D44(Entity* this) {
temp = this->entityType.subtype;
temp ^= 0x15;
idx = ((-temp | temp) >> 0x1f) * 4;
idx = BOOLCAST(temp) * 4;
if (!LoadExtraSpriteData(this, &gUnk_0810F524[idx]))
return;
@ -132,7 +132,7 @@ void sub_08063E90(Entity* this) {
temp = this->entityType.subtype;
temp ^= 0x15;
idx = ((-temp | temp) >> 0x1f) * 4;
idx = BOOLCAST(temp) * 4;
if (!LoadExtraSpriteData(this, &gUnk_0810F524[idx]))
return;

View File

@ -66,7 +66,7 @@ void sub_080670B4(Entity* this) {
uVar2 = 0;
if (GetInventoryValue(0x11) == 0) {
uVar1 = CheckGlobalFlag(TABIDACHI);
uVar2 = (-uVar1 | uVar1) >> 0x1f;
uVar2 = BOOLCAST(uVar1);
}
TextboxNoOverlap(gUnk_08110C0C[uVar2], this);
}

View File

@ -299,7 +299,7 @@ void sub_0806B098(Entity* this) {
idx = 1;
if (CheckGlobalFlag(0x29)) {
f = CheckGlobalFlag(0x2a);
idx = (-f | f) >> 0x1f;
idx = BOOLCAST(f);
}
}
TextboxNoOverlap(gUnk_08112C50[(this->entityType.parameter - 7) * 3 + idx], this);

View File

@ -60,7 +60,7 @@ void sub_0809EABC(Entity* this) {
u32 f;
f = CheckFlags(this->field_0x86.HWORD);
anySet = (-f | f) >> 0x1F;
anySet = BOOLCAST(f);
if (this->frameIndex != anySet) {
this->frameIndex = anySet;
}

View File

@ -4489,7 +4489,7 @@ void sub_0804E3C4() {
u32 index;
u32 tmp;
tmp = CheckGlobalFlag(LV4_CLEAR);
index = (-tmp | tmp) >> 0x1F;
index = BOOLCAST(tmp);
if (CheckGlobalFlag(LV5_CLEAR)) {
index = 2;
}

View File

@ -2,6 +2,7 @@
#include "room.h"
#include "entity.h"
#include "textbox.h"
#include "structures.h"
void _DmaZero();
void ShowTextbox();
@ -10,31 +11,31 @@ void TextboxAtPosition();
extern u32 gUnk_02022780;
extern u32 gUnk_02036A40;
extern u32 gUnk_02036A38;
extern u32 gUnk_02000040;
void sub_08056360(void)
s32 sub_08056338(void) {
s32 result;
{
if ((gTextBox.doTextBox & 127) != 0) {
gTextBox.doTextBox = 136;
}
return;
result = -1;
if (((gTextBox.doTextBox & 0x7f) == 0) && (gUnk_02000040.unk_00 == 3))
result = gUnk_02000040.unk_01;
return result;
}
void TextboxNoOverlapFollow(u32 index)
void sub_08056360(void) {
if ((gTextBox.doTextBox & 0x7f) != 0) {
gTextBox.doTextBox = 0x80 | 0x8;
}
}
{
void TextboxNoOverlapFollow(u32 index) {
if (gRoomControls.cameraTarget != NULL) {
TextboxNoOverlap(index, gRoomControls.cameraTarget);
} else {
ShowTextbox(index);
}
return;
}
void TextboxNoOverlap(u32 index, Entity* ent)
{
void TextboxNoOverlap(u32 index, Entity* ent) {
s16 y;
s16 h;
@ -43,22 +44,19 @@ void TextboxNoOverlap(u32 index, Entity* ent)
y = ent->y.HALF.HI;
h = ent->height.HALF.HI;
if (88 < ((y + h) - gRoomControls.roomScrollY)) {
if (((y + h) - gRoomControls.roomScrollY) > 0x58) {
gTextBox.textWindowPosY = 1;
}
return;
}
void sub_080563C8(u32 param_1, u32 param_2) {
TextboxAtPosition(param_1, 1, param_2);
return;
}
void TextboxAtPosition(u32 index, u32 x, u32 y) {
ShowTextbox(index);
gTextBox.textWindowPosX = x;
gTextBox.textWindowPosY = y;
return;
}
void ShowTextbox(u32 index, u32 param_2, u32* dest) {
@ -70,15 +68,12 @@ void ShowTextbox(u32 index, u32 param_2, u32* dest) {
gTextBox.textWindowPosX = 1;
gTextBox.textWindowPosY = 12;
gTextBox.doTextBox = 1;
return;
}
void sub_08056418(void) {
_DmaZero(&gTextBox, 32);
_DmaZero(&gUnk_02022780, 168);
_DmaZero(&gUnk_02036A40, 8);
_DmaZero(&gUnk_02036A38, 8);
_DmaZero(&gUnk_02000040, 4);
return;
}

View File

@ -1,7 +1,9 @@
{
"folders" : [ { "path" : ".." } ], "settings" : {
"files.associations" : {
"algorithm" : "cpp", "ios" : "c"
"algorithm": "cpp",
"ios": "c",
"functions.h": "c"
}
}
}