Merge branch 'master' into demo-jp

This commit is contained in:
octorock 2021-10-29 12:23:25 +02:00
commit fdeca80fc3
5 changed files with 68 additions and 184 deletions

View File

@ -1,174 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
.ifdef DEMO_USA
thumb_func_start sub_0807CA18
sub_0807CA18:
push {r4, r5, r6, lr}
ldr r4, _0807CA38 @ =0x02002A40
ldrh r1, [r4, #0x00]
movs r0, #0x80
lsls r0, r0, #0x01
cmp r1, r0
beq _0807C9BA
movs r2, #0x00
strb r2, [r4, #0x00]
movs r3, #0x01
strb r3, [r4, #0x01]
strb r3, [r4, #0x08]
adds r1, r4, #0x0
adds r1, #0xAA
movs r0, #0x18
strb r0, [r1, #0x00]
adds r1, #0x01
strb r0, [r1, #0x00]
subs r1, #0x23
movs r0, #0x22
strb r0, [r1, #0x00]
adds r1, #0x01
movs r0, #0x15
strb r0, [r1, #0x00]
adds r0, r4, #0x0
adds r0, #0x8A
strb r2, [r0, #0x00]
adds r0, #0x01
strb r2, [r0, #0x00]
adds r0, #0x05
strb r3, [r0, #0x00]
adds r1, #0x03
movs r0, #0x90
strh r0, [r1, #0x00]
adds r1, #0x02
movs r0, #0x38
strh r0, [r1, #0x00]
_0807C9BA:
adds r5, r4, #0x0
adds r5, #0x80
ldrb r0, [r5, #0x00]
cmp r0, #0x00
bne _0807C9CE
ldr r0, _0807CA3C @ =0x0811DFF4
adds r1, r5, #0x0
movs r2, #0x05
bl MemCopy
_0807C9CE:
ldr r1, _0807CA40 @ =0x0811EF10
movs r6, #0x80
lsls r6, r6, #0x12
ldrb r0, [r6, #0x04]
lsls r0, r0, #0x02
adds r0, r0, r1
ldr r0, [r0, #0x00]
ldr r2, _0807CA44 @ =0x000004B4
adds r1, r4, #0x0
bl MemCopy
ldrb r0, [r6, #0x07]
adds r2, r0, #0x0
cmp r2, #0x00
bne _0807CA04
movs r0, #0x97
strb r0, [r5, #0x00]
adds r1, r4, #0x0
adds r1, #0x81
movs r0, #0x7F
strb r0, [r1, #0x00]
adds r1, #0x01
movs r0, #0xDD
strb r0, [r1, #0x00]
adds r0, r4, #0x0
adds r0, #0x83
strb r2, [r0, #0x00]
_0807CA04:
movs r0, #0xA0
bl ModHealth
ldr r0, _0807CA48 @ =0xFFFFD8F1
bl ModRupees
ldr r0, _0807CA4C @ =0x02000010
ldrb r1, [r0, #0x07]
lsls r0, r1, #0x01
adds r0, r0, r1
ldr r1, _0807CA50 @ =0x0811DFF9
adds r0, r0, r1
movs r1, #0x95
lsls r1, r1, #0x03
adds r2, r4, r1
ldrb r1, [r6, #0x04]
adds r0, r0, r1
ldrb r1, [r0, #0x00]
lsls r0, r1, #0x03
subs r0, r0, r1
lsls r0, r0, #0x05
adds r0, r0, r1
lsls r0, r0, #0x04
str r0, [r2, #0x00]
movs r0, #0x01
pop {r4, r5, r6, pc}
_0807CA38: .4byte gSave
_0807CA3C: .4byte gUnk_0811E470
_0807CA40: .4byte demoPointers
_0807CA44: .4byte 0x000004B4
_0807CA48: .4byte 0xFFFFD8F1
_0807CA4C: .4byte gUnk_02000010
_0807CA50: .4byte demoUnknown1
.else
thumb_func_start sub_0807CA18
sub_0807CA18: @ 0x0807CA18
push {lr}
ldr r0, _0807CA7C @ =gSave
mov ip, r0
ldrh r1, [r0]
movs r0, #0x80
lsls r0, r0, #1
cmp r1, r0
beq _0807CA66
movs r2, #0
mov r0, ip
strb r2, [r0]
movs r3, #1
strb r3, [r0, #1]
strb r3, [r0, #8]
mov r1, ip
adds r1, #0xaa
movs r0, #0x18
strb r0, [r1]
adds r1, #1
strb r0, [r1]
subs r1, #0x23
movs r0, #0x22
strb r0, [r1]
adds r1, #1
movs r0, #0x15
strb r0, [r1]
mov r0, ip
adds r0, #0x8a
strb r2, [r0]
adds r0, #1
strb r2, [r0]
adds r0, #5
strb r3, [r0]
adds r1, #3
movs r0, #0x90
strh r0, [r1]
adds r1, #2
movs r0, #0x38
strh r0, [r1]
_0807CA66:
mov r1, ip
adds r1, #0x80
ldrb r0, [r1]
cmp r0, #0
bne _0807CA78
ldr r0, _0807CA80 @ =gUnk_0811E470
movs r2, #5
bl MemCopy
_0807CA78:
movs r0, #1
pop {pc}
.align 2, 0
_0807CA7C: .4byte gSave
_0807CA80: .4byte gUnk_0811E470
.endif

View File

@ -22,7 +22,8 @@ typedef enum {
extern SaveResult HandleSave(u32 arg0);
typedef struct {
/*0x000*/ u8 filler0[0x2];
/*0x000*/ u8 unk_00;
/*0x000*/ u8 unk_01;
/*0x002*/ u8 messageSpeed;
/*0x003*/ u8 brightnessPref;
/*0x004*/ u8 filler4[0x2];
@ -35,14 +36,24 @@ typedef struct {
/*0x050*/ u32 unk50;
/*0x054*/ u8 filler54[0x2C];
/*0x080*/ u8 playerName[FILENAME_LENGTH];
/*0x086*/ u8 filler86[0x22];
/*0x086*/ u8 filler86[0x2];
/*0x088*/ u8 unk_88;
/*0x089*/ u8 unk_89;
/*0x08A*/ u8 unk_8A;
/*0x08B*/ u8 unk_8B;
/*0x08C*/ u16 unk_8C;
/*0x08E*/ u16 unk_8E;
/*0x08F*/ u8 unk_8F;
/*0x090*/ u8 filler91[0x15];
/*0x0A8*/ Stats stats;
/*0x0D0*/ u8 fillerD0[0x71];
/*0x141*/ u8 unk141[0x34f];
/*0x490*/ u32 unk490;
/*0x494*/ u32 unk494;
/*0x498*/ u32 unk498;
/*0x49C*/ u8 filler49C[0x18];
/*0x49C*/ u8 filler49C[0xC];
/*0x4a8*/ u32 unk_4a8;
/*0x4ac*/ u8 filler4ac[0x8];
} SaveFile;
extern SaveFile gSave;
@ -54,4 +65,11 @@ s32 ReadSaveFile(u32, SaveFile*);
u32 Read_02000000(struct_02000000*);
void SetFileStatusDeleted(u32 index);
#endif
extern const char gUnk_0811E470[];
#ifdef DEMO_USA
extern const u8* const demoPointers[];
extern const u8 demoUnknown1[];
#endif
#endif

View File

@ -692,7 +692,7 @@ SECTIONS {
src/sub_0807B820.o(.text);
asm/code_0807B9B8.o(.text);
src/sub_0807C998.o(.text);
asm/sub_0807CA18.o(.text);
src/sub_0807CA18.o(.text);
asm/getInventoryValue.o(.text);
asm/code_0807CAA0.o(.text);
src/flags.o(.text);

View File

@ -63,13 +63,12 @@ asm("demoPointer1: .incbin \"baserom_demo.gba\", 0x11e010, 0x500");
asm("demoPointer2: .incbin \"baserom_demo.gba\", 0x11e510, 0x500");
asm("demoPointer3: .incbin \"baserom_demo.gba\", 0x11ea10, 0x500");
extern const u32 demoPointer1;
extern const u32 demoPointer2;
extern const u32 demoPointer3;
extern const u8 demoPointer1[];
extern const u8 demoPointer2[];
extern const u8 demoPointer3[];
const u32 demoPointers[] = { (u32)&demoPointer1, (u32)&demoPointer2, (u32)&demoPointer3 };
const u8* const demoPointers[] = { demoPointer1, demoPointer2, demoPointer3 };
#endif
#else
#if defined(JP) || defined(EU)

41
src/sub_0807CA18.c Normal file
View File

@ -0,0 +1,41 @@
#include "global.h"
#include "structures.h"
#include "save.h"
#include "utils.h"
u8 sub_0807CA18() {
if (gSave.unk_00 != 0x00 || gSave.unk_01 != 1) {
gSave.unk_00 = 0;
gSave.unk_01 = 1;
gSave.unk8 = 1;
gSave.stats.health = 0x18;
gSave.stats.maxHealth = 0x18;
gSave.unk_88 = 0x22;
gSave.unk_89 = 0x15;
gSave.unk_8A = 0;
gSave.unk_8B = 0;
gSave.unk_8F = 1;
gSave.unk_8C = 0x90;
gSave.unk_8E = 0x38;
}
if (gSave.playerName[0] == 0) {
MemCopy(gUnk_0811E470, &gSave.playerName, 5);
}
#ifdef DEMO_USA
{
const u8* tmp;
MemCopy(demoPointers[gUnk_02000000->saveFileId], &gSave, 0x4B4);
if (gUnk_02000000->gameLanguage == 0) {
gSave.playerName[0] = 0x97;
gSave.playerName[1] = 0x7F;
gSave.playerName[2] = 0xDD;
gSave.playerName[3] = 0;
}
ModHealth(0xA0);
ModRupees(-9999);
tmp = demoUnknown1 + gUnk_02000010.field_0x7 * 3;
gSave.unk_4a8 = tmp[gUnk_02000000->saveFileId] * 3600;
}
#endif
return 1;
}