mirror of https://github.com/zeldaret/tmc.git
Merge branch 'master' into demo-jp
This commit is contained in:
commit
fdeca80fc3
|
@ -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
|
|
|
@ -22,7 +22,8 @@ typedef enum {
|
||||||
extern SaveResult HandleSave(u32 arg0);
|
extern SaveResult HandleSave(u32 arg0);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/*0x000*/ u8 filler0[0x2];
|
/*0x000*/ u8 unk_00;
|
||||||
|
/*0x000*/ u8 unk_01;
|
||||||
/*0x002*/ u8 messageSpeed;
|
/*0x002*/ u8 messageSpeed;
|
||||||
/*0x003*/ u8 brightnessPref;
|
/*0x003*/ u8 brightnessPref;
|
||||||
/*0x004*/ u8 filler4[0x2];
|
/*0x004*/ u8 filler4[0x2];
|
||||||
|
@ -35,14 +36,24 @@ typedef struct {
|
||||||
/*0x050*/ u32 unk50;
|
/*0x050*/ u32 unk50;
|
||||||
/*0x054*/ u8 filler54[0x2C];
|
/*0x054*/ u8 filler54[0x2C];
|
||||||
/*0x080*/ u8 playerName[FILENAME_LENGTH];
|
/*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;
|
/*0x0A8*/ Stats stats;
|
||||||
/*0x0D0*/ u8 fillerD0[0x71];
|
/*0x0D0*/ u8 fillerD0[0x71];
|
||||||
/*0x141*/ u8 unk141[0x34f];
|
/*0x141*/ u8 unk141[0x34f];
|
||||||
/*0x490*/ u32 unk490;
|
/*0x490*/ u32 unk490;
|
||||||
/*0x494*/ u32 unk494;
|
/*0x494*/ u32 unk494;
|
||||||
/*0x498*/ u32 unk498;
|
/*0x498*/ u32 unk498;
|
||||||
/*0x49C*/ u8 filler49C[0x18];
|
/*0x49C*/ u8 filler49C[0xC];
|
||||||
|
/*0x4a8*/ u32 unk_4a8;
|
||||||
|
/*0x4ac*/ u8 filler4ac[0x8];
|
||||||
} SaveFile;
|
} SaveFile;
|
||||||
|
|
||||||
extern SaveFile gSave;
|
extern SaveFile gSave;
|
||||||
|
@ -54,4 +65,11 @@ s32 ReadSaveFile(u32, SaveFile*);
|
||||||
u32 Read_02000000(struct_02000000*);
|
u32 Read_02000000(struct_02000000*);
|
||||||
void SetFileStatusDeleted(u32 index);
|
void SetFileStatusDeleted(u32 index);
|
||||||
|
|
||||||
#endif
|
extern const char gUnk_0811E470[];
|
||||||
|
|
||||||
|
#ifdef DEMO_USA
|
||||||
|
extern const u8* const demoPointers[];
|
||||||
|
extern const u8 demoUnknown1[];
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -692,7 +692,7 @@ SECTIONS {
|
||||||
src/sub_0807B820.o(.text);
|
src/sub_0807B820.o(.text);
|
||||||
asm/code_0807B9B8.o(.text);
|
asm/code_0807B9B8.o(.text);
|
||||||
src/sub_0807C998.o(.text);
|
src/sub_0807C998.o(.text);
|
||||||
asm/sub_0807CA18.o(.text);
|
src/sub_0807CA18.o(.text);
|
||||||
asm/getInventoryValue.o(.text);
|
asm/getInventoryValue.o(.text);
|
||||||
asm/code_0807CAA0.o(.text);
|
asm/code_0807CAA0.o(.text);
|
||||||
src/flags.o(.text);
|
src/flags.o(.text);
|
||||||
|
|
|
@ -63,13 +63,12 @@ asm("demoPointer1: .incbin \"baserom_demo.gba\", 0x11e010, 0x500");
|
||||||
asm("demoPointer2: .incbin \"baserom_demo.gba\", 0x11e510, 0x500");
|
asm("demoPointer2: .incbin \"baserom_demo.gba\", 0x11e510, 0x500");
|
||||||
asm("demoPointer3: .incbin \"baserom_demo.gba\", 0x11ea10, 0x500");
|
asm("demoPointer3: .incbin \"baserom_demo.gba\", 0x11ea10, 0x500");
|
||||||
|
|
||||||
extern const u32 demoPointer1;
|
extern const u8 demoPointer1[];
|
||||||
extern const u32 demoPointer2;
|
extern const u8 demoPointer2[];
|
||||||
extern const u32 demoPointer3;
|
extern const u8 demoPointer3[];
|
||||||
|
|
||||||
const u32 demoPointers[] = { (u32)&demoPointer1, (u32)&demoPointer2, (u32)&demoPointer3 };
|
const u8* const demoPointers[] = { demoPointer1, demoPointer2, demoPointer3 };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#if defined(JP) || defined(EU)
|
#if defined(JP) || defined(EU)
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
Loading…
Reference in New Issue