remove EWRAM_DATA_2

This commit is contained in:
DizzyEggg 2024-12-15 21:12:36 +01:00
parent 6a3dbaabde
commit edd2454349
18 changed files with 100 additions and 123 deletions

View File

@ -252,13 +252,10 @@ $(BUILD_DIR)/sym_ewram.ld: sym_ewram.txt
$(BUILD_DIR)/sym_iwram.ld: sym_iwram.txt
$(RAMSCRGEN) iwram_data $< ENGLISH > $@
$(BUILD_DIR)/sym_ewram2.ld: sym_ewram2.txt
$(RAMSCRGEN) ewram_data_2 $< ENGLISH > $@
$(BUILD_DIR)/sym_ewram_init.ld: sym_ewram_init.txt
$(RAMSCRGEN) ewram_init $< ENGLISH > $@
$(LD_SCRIPT): ld_script.txt $(BUILD_DIR)/sym_ewram.ld $(BUILD_DIR)/sym_ewram2.ld $(BUILD_DIR)/sym_ewram_init.ld $(BUILD_DIR)/sym_iwram.ld
$(LD_SCRIPT): ld_script.txt $(BUILD_DIR)/sym_ewram.ld $(BUILD_DIR)/sym_ewram_init.ld $(BUILD_DIR)/sym_iwram.ld
cd $(BUILD_DIR) && sed -e "s#tools/#../../tools/#g" ../../ld_script.txt >ld_script.ld
$(ELF): $(LD_SCRIPT) $(ALL_OBJECTS) $(LIBC) libagbsyscall tools

View File

@ -4,21 +4,6 @@
gUnknown_8270000: @ 8270000
@ replacing .incbin "baserom.gba", 0x00270000, 0x2724
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.4byte gUnknown_8116390
.4byte gUnknown_811636C
.4byte gUnknown_811633C
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.4byte _impure_ptr - 0x108
.4byte _impure_ptr - 0xb0
.4byte _impure_ptr - 0x58

View File

@ -8,7 +8,7 @@
#define IWRAM_DATA __attribute__((section("iwram_data")))
#define EWRAM_DATA __attribute__((section("ewram_data")))
#define EWRAM_DATA_2 __attribute__((section("ewram_data_2")))
#define EWRAM_LIB __attribute__((section("ewram_lib"))) // Used only for agb flash and m4a
#define EWRAM_INIT __attribute__((section("ewram_init")))
#define UNUSED __attribute__((unused))
#define NAKED __attribute__((naked))

View File

@ -24,8 +24,8 @@ SECTIONS {
*libgcc.a:dp-bit.o(.bss);
*libc.a:syscalls.o(.bss);
. = ALIGN(16);
src/m4a.o(ewram_data_2);
src/agb_flash.o(ewram_data_2);
src/m4a.o(ewram_lib);
src/agb_flash.o(ewram_lib);
*libc.a:sbrkr.o(COMMON);
} > EWRAM

View File

@ -6,16 +6,16 @@ static u16 sTimerCount;
static vu16 *sTimerReg;
static u16 sSavedIme;
EWRAM_DATA_2 u8 gFlashTimeoutFlag = {0};
EWRAM_DATA_2 u8 (*PollFlashStatus)(u8 *) = {0};
EWRAM_DATA_2 u16 (*WaitForFlashWrite)(u8 phase, u8 *addr, u8 lastData) = {0};
EWRAM_DATA_2 u16 (*ProgramFlashSector)(u16 sectorNum, u8 *src) = {0};
EWRAM_DATA_2 const struct FlashType *gFlash = {0};
EWRAM_LIB u8 gFlashTimeoutFlag = {0};
EWRAM_LIB u8 (*PollFlashStatus)(u8 *) = {0};
EWRAM_LIB u16 (*WaitForFlashWrite)(u8 phase, u8 *addr, u8 lastData) = {0};
EWRAM_LIB u16 (*ProgramFlashSector)(u16 sectorNum, u8 *src) = {0};
EWRAM_LIB const struct FlashType *gFlash = {0};
// u16 (*ProgramFlashByte)(u16 sectorNum, u32 offset, u8 data); // not used in PMD: Red
EWRAM_DATA_2 u16 gFlashNumRemainingBytes = {0};
EWRAM_DATA_2 u16 (*EraseFlashChip)() = {0};
EWRAM_DATA_2 u16 (*EraseFlashSector)(u16 sectorNum) = {0};
EWRAM_DATA_2 const u16 *gFlashMaxTime = {0};
EWRAM_LIB u16 gFlashNumRemainingBytes = {0};
EWRAM_LIB u16 (*EraseFlashChip)() = {0};
EWRAM_LIB u16 (*EraseFlashSector)(u16 sectorNum) = {0};
EWRAM_LIB const u16 *gFlashMaxTime = {0};
void SetReadFlash1(u16 *dest);

View File

@ -10,10 +10,10 @@
#include "save.h"
#include "text_util.h"
EWRAM_DATA_2 unkStruct_203B480 *gUnknown_203B480 = {0};
EWRAM_DATA_2 unkStruct_203B484 *gUnknown_203B484 = {0};
EWRAM_DATA_2 u32 *gUnknown_203B488 = {0};
EWRAM_DATA_2 unkStruct_203B48C *gUnknown_203B48C = {0};
EWRAM_INIT unkStruct_203B480 *gUnknown_203B480 = {NULL};
EWRAM_INIT unkStruct_203B484 *gUnknown_203B484 = {NULL};
EWRAM_INIT u32 *gUnknown_203B488 = {NULL};
EWRAM_INIT unkStruct_203B48C *gUnknown_203B48C = {NULL};
EWRAM_DATA unkStruct_203B480 gUnknown_2038C88[0x20] = {0};
EWRAM_DATA unkStruct_203B484 gUnknown_2039288 = {0};
@ -410,7 +410,7 @@ u32 sub_8095624(u8 *buffer, u32 b)
for (i = 0; i < 32; i++) {
WriteBits(&backup, &gUnknown_203B48C->unk4[i], 32);
}
FinishBitSerializer(&backup);
return backup.count;
}
@ -468,4 +468,4 @@ void sub_8095824(DataSerializer * a, unkStruct_203B480 *b)
void sub_80958E4(u32 *a, u32 b)
{
*a = b;
}
}

View File

@ -42,7 +42,7 @@ extern u8 gUnknown_8109984[];
static EWRAM_DATA unkStruct_203B490 sUnknown_2039448 = {0};
EWRAM_DATA_2 unkStruct_203B490 *gUnknown_203B490 = {0};
EWRAM_INIT unkStruct_203B490 *gUnknown_203B490 = {0};
void LoadMailInfo(void)
{
@ -280,7 +280,7 @@ bool8 GenerateMailJobDungeonInfo(WonderMail *mail)
s32 halfFloorCount;
s32 floorCount;
DungeonLocation dungeonLoc;
cap = sub_80A29B0(dungeonStack);
if (cap == 0) {
@ -335,7 +335,7 @@ bool8 GenerateMailJobDungeonInfo(WonderMail *mail)
floor = halfFloorCount;
}
} while (floor != floor_1);
counter++;
if (counter == cap) {
counter = 0;
@ -369,7 +369,7 @@ u8 sub_8095E78(void)
s32 counter;
u8 friendAreaStack[NUM_FRIEND_AREAS];
counter = 0;
for(friendAreaIndex = BOUNTIFUL_SEA; friendAreaIndex < NUM_FRIEND_AREAS; friendAreaIndex++)
{
@ -383,7 +383,7 @@ u8 sub_8095E78(void)
if((gUnknown_203B490->mailboxSlots[index].mailType != MAIL_TYPE_NONE) && (gUnknown_203B490->mailboxSlots[index].rewardType == FRIEND_AREA))
flag = TRUE;
}
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
@ -410,7 +410,7 @@ u8 sub_8095F28(u8 param_1)
s32 itemID;
s32 counter;
u8 itemStack [NUMBER_OF_ITEM_IDS];
counter = 0;
for(itemID = ITEM_STICK; itemID < NUMBER_OF_ITEM_IDS; itemID++)
{
@ -493,8 +493,8 @@ void ShiftMailboxSlotsDown(void)
{
int counter1; // r5
int counter2;
counter1 = 0;
counter2 = 0;
@ -504,7 +504,7 @@ void ShiftMailboxSlotsDown(void)
if (gUnknown_203B490->mailboxSlots[counter1].mailType != 0)
break;
}
if (counter1 == NUM_MAILBOX_SLOTS) {
break;
}
@ -527,15 +527,15 @@ static void SortMailboxSlots(void)
s32 r1;
s32 r6;
WonderMail job;
for(r1 = 0; r1 < NUM_MAILBOX_SLOTS - 1; r1++)
{
for(r6 = r1 + 1; r6 < NUM_MAILBOX_SLOTS; r6++)
{
if(gUnknown_203B490->mailboxSlots[r6].mailType != 0)
{
if((gUnknown_203B490->mailboxSlots[r1].unk4.dungeon.id > gUnknown_203B490->mailboxSlots[r6].unk4.dungeon.id) ||
((gUnknown_203B490->mailboxSlots[r1].unk4.dungeon.id == gUnknown_203B490->mailboxSlots[r6].unk4.dungeon.id) &&
if((gUnknown_203B490->mailboxSlots[r1].unk4.dungeon.id > gUnknown_203B490->mailboxSlots[r6].unk4.dungeon.id) ||
((gUnknown_203B490->mailboxSlots[r1].unk4.dungeon.id == gUnknown_203B490->mailboxSlots[r6].unk4.dungeon.id) &&
(gUnknown_203B490->mailboxSlots[r1].unk4.dungeon.floor > gUnknown_203B490->mailboxSlots[r6].unk4.dungeon.floor)))
{
job = gUnknown_203B490->mailboxSlots[r1];
@ -562,11 +562,11 @@ bool8 sub_80961D8(void)
s32 friendAreaReward;
WonderMail *slot;
bool8 flag = FALSE;
num = CountFilledMailboxSlots();
index = RandRange(num, NUM_MAILBOX_SLOTS);
if(num >= NUM_MAILBOX_SLOTS) return 0;
if(!gUnknown_203B490->unk328)
if(!gUnknown_203B490->unk328)
return 0;
else
{
@ -598,7 +598,7 @@ bool8 sub_80961D8(void)
if(!gUnknown_203B490->PKMNNewsReceived[0x37])
if(!sub_8096E80(0x37)) floor = 0x37;
}
if(floor != 0x38) goto _slot;
if(num > index) goto _08096392;
floor = sub_8096E2C();
@ -653,7 +653,7 @@ bool8 sub_80963B4(void)
s32 num;
WonderMail *slot;
bool8 flag = FALSE;
floor = sub_8096E2C();
num = CountFilledMailboxSlots();
if(num >= NUM_MAILBOX_SLOTS) return FALSE;
@ -675,7 +675,7 @@ void sub_80963FC(void)
{
s32 index;
WonderMail *slot;
for(index = 0; index < NUM_MAILBOX_SLOTS; index++)
{
slot = GetMailboxSlotInfo(index);
@ -749,7 +749,7 @@ s32 CountFilledPelipperBoardSlots(void)
if (!IsPelipperBoardSlotEmpty(index)) {
slots++;
}
}
}
return slots;
}
@ -793,8 +793,8 @@ void ShiftPelipperJobsDown(void)
{
int counter1; // r5
int counter2;
counter1 = 0;
counter2 = 0;
@ -804,7 +804,7 @@ void ShiftPelipperJobsDown(void)
if (gUnknown_203B490->pelipperBoardJobs[counter1].mailType != 0)
break;
}
if (counter1 == MAX_ACCEPTED_JOBS) {
break;
}
@ -840,11 +840,11 @@ void SortPelipperJobs(void)
((gUnknown_203B490->pelipperBoardJobs[index1].unk4.dungeon.id == gUnknown_203B490->pelipperBoardJobs[index2].unk4.dungeon.id) && (gUnknown_203B490->pelipperBoardJobs[index1].unk4.dungeon.floor > gUnknown_203B490->pelipperBoardJobs[index2].unk4.dungeon.floor)))
{
mail = gUnknown_203B490->pelipperBoardJobs[index1];
gUnknown_203B490->pelipperBoardJobs[index1] = gUnknown_203B490->pelipperBoardJobs[index2];
gUnknown_203B490->pelipperBoardJobs[index1] = gUnknown_203B490->pelipperBoardJobs[index2];
gUnknown_203B490->pelipperBoardJobs[index2] = mail;
}
}
}
}
}
}
@ -853,13 +853,13 @@ void GeneratePelipperJobs(void)
s32 range;
WonderMail *mail;
s32 index;
range = RandRange(4,8);
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
gUnknown_203B490->pelipperBoardJobs[index].mailType = MAIL_TYPE_NONE;
}
index = 0;
if (sub_8097318(0xe) != 0) {
mail = GetPelipperBoardSlotInfo(0);
@ -924,11 +924,11 @@ bool8 IsMailinJobSlot(WonderMail *mail)
{
WonderMail *jobSlot;
s32 index;
for(index = 0, jobSlot = &gUnknown_203B490->jobSlots[0]; index < MAX_ACCEPTED_JOBS; jobSlot++, index++)
{
if(jobSlot->mailType != MAIL_TYPE_NONE)
if(mail->missionType == jobSlot->missionType)
if(mail->missionType == jobSlot->missionType)
if(mail->unk2 == jobSlot->unk2)
if(mail->unk4.dungeon.id == jobSlot->unk4.dungeon.id)
if(mail->unk4.dungeon.floor == jobSlot->unk4.dungeon.floor)
@ -939,7 +939,7 @@ bool8 IsMailinJobSlot(WonderMail *mail)
if(mail->rewardType == jobSlot->rewardType)
if(mail->itemReward == jobSlot->itemReward)
if(mail->friendAreaReward == jobSlot->friendAreaReward)
return TRUE;
return TRUE;
}
return FALSE;
}
@ -950,7 +950,7 @@ bool8 sub_809693C(WonderMail *mail)
u8 floor;
bool8 escortMission;
s32 index;
dungeonIndex = mail->unk4.dungeon.id;
floor = mail->unk4.dungeon.floor;
escortMission = FALSE;
@ -977,7 +977,7 @@ s32 GetNumAcceptedJobs(void)
{
s32 index;
s32 count;
count = 0;
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
@ -993,7 +993,7 @@ s32 CountJobsinDungeon(u8 dungeon)
WonderMail *mail;
s32 index;
s32 count;
count = 0;
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
@ -1002,7 +1002,7 @@ s32 CountJobsinDungeon(u8 dungeon)
(((mail->mailType == MAIL_TYPE_TAKEN_JOB || (mail->mailType == MAIL_TYPE_UNK8)) || (mail->mailType == MAIL_TYPE_UNK9)))) {
count++;
}
}
}
return count;
}
@ -1070,7 +1070,7 @@ void sub_8096AF8(struct unkStruct_8096AF8 *param_1, u8 slotIndex,u8 dungeon)
WonderMail *jobSlot;
Item *item;
s32 index;
jobSlot = GetJobSlotInfo(slotIndex);
param_1->unk0 = FALSE;
param_1->clientSpecies = jobSlot->clientSpecies;
@ -1110,7 +1110,7 @@ s16 sub_8096B98(u8 dungeon)
{
WonderMail *mail;
s32 index;
for(index = 0; index < MAX_ACCEPTED_JOBS; index++)
{
mail = GetJobSlotInfo(index);
@ -1171,8 +1171,8 @@ void ShiftJobSlotsDown(void)
{
int counter1; // r5
int counter2;
counter1 = 0;
counter2 = 0;
@ -1182,7 +1182,7 @@ void ShiftJobSlotsDown(void)
if (gUnknown_203B490->jobSlots[counter1].mailType != 0)
break;
}
if (counter1 == MAX_ACCEPTED_JOBS) {
break;
}
@ -1205,15 +1205,15 @@ void SortJobSlots(void)
s32 r1;
s32 r6;
WonderMail job;
for(r1 = 0; r1 < MAX_ACCEPTED_JOBS - 1; r1++)
{
for(r6 = r1 + 1; r6 < MAX_ACCEPTED_JOBS; r6++)
{
if(gUnknown_203B490->jobSlots[r6].mailType != 0)
{
if((gUnknown_203B490->jobSlots[r1].unk4.dungeon.id > gUnknown_203B490->jobSlots[r6].unk4.dungeon.id) ||
((gUnknown_203B490->jobSlots[r1].unk4.dungeon.id == gUnknown_203B490->jobSlots[r6].unk4.dungeon.id) &&
if((gUnknown_203B490->jobSlots[r1].unk4.dungeon.id > gUnknown_203B490->jobSlots[r6].unk4.dungeon.id) ||
((gUnknown_203B490->jobSlots[r1].unk4.dungeon.id == gUnknown_203B490->jobSlots[r6].unk4.dungeon.id) &&
(gUnknown_203B490->jobSlots[r1].unk4.dungeon.floor > gUnknown_203B490->jobSlots[r6].unk4.dungeon.floor)))
{
job = gUnknown_203B490->jobSlots[r1];
@ -1254,7 +1254,7 @@ u8 sub_8096E2C(void)
if(gUnknown_203B490->mailboxSlots[index].mailType == 1)
{
if(floor <= gUnknown_203B490->mailboxSlots[index].unk4.dungeon.floor)
if( gUnknown_203B490->mailboxSlots[index].unk4.dungeon.floor < 0x32)
if( gUnknown_203B490->mailboxSlots[index].unk4.dungeon.floor < 0x32)
floor = gUnknown_203B490->mailboxSlots[index].unk4.dungeon.floor + 1;
}
}
@ -1285,7 +1285,7 @@ s32 CalculateMailChecksum(WonderMail *mail)
s32 sum;
sum = (mail->unk2 + mail->missionType);
sum += mail->unk4.dungeon.id;
sum += mail->unk4.dungeon.floor;
@ -1370,7 +1370,7 @@ u32 RestoreMailInfo(u8 *r0, u32 size)
gUnknown_203B490->unk328 = TRUE;
else
gUnknown_203B490->unk328 = FALSE;
ReadBits(&backup, gUnknown_203B490->unk190, 40 * 8);
ReadBits(&backup, gUnknown_203B490->unk1B8, 120 * 8);
for (index = 0; index < 16; index++)

View File

@ -8,7 +8,7 @@
static EWRAM_DATA struct unkStruct_203B494 sUnknown_2039778 = {0};
EWRAM_DATA_2 struct unkStruct_203B494 *gUnknown_203B494 = {0};
EWRAM_INIT struct unkStruct_203B494 *gUnknown_203B494 = {0};
// data_810AE24.s
extern const u8 *gAdventureLogText[];
@ -392,4 +392,4 @@ u32 RestoreAdventureData(u8 *buffer, u32 bufLen)
FinishBitSerializer(&seri);
return seri.count;
}
}

View File

@ -50,6 +50,12 @@ void nullsub_114();
void nullsub_115();
void nullsub_116();
extern const char gUnknown_8116390[];
extern const char gUnknown_811636C[];
extern const char gUnknown_811633C[];
EWRAM_INIT const char *gUnknown_203B4A0[3] = {gUnknown_8116390, gUnknown_811636C, gUnknown_811633C};
void sub_809C5C4(void)
{
gUnknown_3001B68 = MemoryAlloc(sizeof(struct unkStruct_3001B68), 6);

View File

@ -377,7 +377,7 @@ void nullsub_120(void)
// Different file below?
extern void *gUnknown_203B4B0;
EWRAM_INIT void *gUnknown_203B4B0 = NULL;
void sub_809D490(void)
{

View File

@ -26,7 +26,7 @@ const u8 filler_ex1[8] =
'p', 'k', 's', 'd', 'i', 'r', '0', 0
};
EWRAM_DATA_2 struct ExclusivePokemonData *gUnknown_203B498 = {0};
EWRAM_INIT struct ExclusivePokemonData *gUnknown_203B498 = {0};
EWRAM_DATA struct ExclusivePokemonData gExclusivePokemonInfo = {0};
void LoadExclusivePokemon(void)

View File

@ -4,7 +4,7 @@
#include "ground_script.h"
#include "number_util.h"
EWRAM_DATA_2 const struct GroundLink *gCurrentGroundLink = NULL;
EWRAM_INIT const struct GroundLink *gCurrentGroundLink = NULL;
extern DebugLocation gUnknown_8118798;
extern const struct GroundScriptHeader *GetGroundScript(s16 r0, DebugLocation *r1);

View File

@ -22,8 +22,8 @@ EWRAM_DATA u16 gUnknown_20398BE = {0};
EWRAM_DATA u32 gUnknown_20398C0 = {0};
EWRAM_DATA s16 gUnknown_20398C4 = {0};
EWRAM_DATA_2 u8 gUnknown_203B49C = {0};
EWRAM_DATA_2 u8 gUnknown_203B49D = {0};
EWRAM_INIT u8 gUnknown_203B49C = {0};
EWRAM_INIT u8 gUnknown_203B49D = {0};
#include "data/ground_main.h"

View File

@ -136,7 +136,6 @@ extern s16 gUnknown_2039A34;
extern struct { const char *unk0; s32 unk4; } gChoices[9];
extern u8 gUnknown_2039D98[12];
extern int gNumChoices;
extern PixelPos gUnknown_81164DC;
extern char gUnknown_81165D4[];
@ -155,6 +154,8 @@ extern DebugLocation gUnknown_81166F8;
extern DebugLocation gUnknown_8116704;
extern ScriptCommand gUnknown_81164E4;
EWRAM_INIT static int sNumChoices = 0;
// Return values:
// This function returns what's likely an enum, which controls the state of the script engine state machine, and possibly provides information to code calling the engine.
// The enum is shared at least with HandleAction.
@ -1680,7 +1681,7 @@ s32 ExecuteScriptCommand(Action *action) {
case 0xd2 ... 0xd8: {
// DS: Assert(TRUE, "Script command call error SWITCH MENY") [sic]
const char *out = curCmd.argPtr;
gNumChoices = 0;
sNumChoices = 0;
scriptData->branchDiscriminant = 0;
switch(curCmd.op) {
case 0xd6: case 0xd7: case 0xd8: {
@ -1696,13 +1697,13 @@ s32 ExecuteScriptCommand(Action *action) {
}
if (!out) out = gUnknown_81166D8; // ""
for (; scriptData->script.ptr->op == 0xd9; scriptData->script.ptr++) {
gChoices[gNumChoices].unk0 = scriptData->script.ptr->argPtr;
gChoices[gNumChoices].unk4 = gNumChoices + 1;
gNumChoices++;
gChoices[sNumChoices].unk0 = scriptData->script.ptr->argPtr;
gChoices[sNumChoices].unk4 = sNumChoices + 1;
sNumChoices++;
}
if (gNumChoices <= 0) break;
gChoices[gNumChoices].unk0 = NULL;
gChoices[gNumChoices].unk4 = curCmd.argShort;
if (sNumChoices <= 0) break;
gChoices[sNumChoices].unk0 = NULL;
gChoices[sNumChoices].unk4 = curCmd.argShort;
switch (curCmd.op) {
case 0xd2: case 0xd3: case 0xd6: {
sub_809B028(gChoices, (u8)curCmd.argByte > 0, -1, 0, (s16)curCmd.arg1, out);

View File

@ -20,7 +20,7 @@ EWRAM_DATA u8 gUnknown_2039DD0 = {0};
EWRAM_DATA u8 gUnknown_2039DD1[3] = {0, 0, 0}; // Unused, for alignment
EWRAM_DATA u32 gUnknown_2039DD4 = {0};
EWRAM_DATA_2 OpenedFile *gUnknown_203B4B4 = {0};
EWRAM_INIT OpenedFile *gUnknown_203B4B4 = {NULL};
// dungeon_sbin.s
extern const struct FileArchive gDungeonFileArchive;

View File

@ -15,11 +15,11 @@ EWRAM_DATA struct MusicPlayerInfo gMPlayInfo_SE3 = {0};
EWRAM_DATA u8 gMPlayMemAccArea[0x10] = {0};
EWRAM_DATA struct MusicPlayerInfo gMPlayInfo_SE2 = {0};
EWRAM_DATA_2 struct SoundInfo gSoundInfo = {0};
EWRAM_DATA_2 MPlayFunc gMPlayJumpTable[34] = {0};
EWRAM_DATA_2 u32 gUnknown_203AF08 = {0};
EWRAM_DATA_2 u32 gUnknown_203AF0C = {0};
EWRAM_DATA_2 struct CgbChannel gCgbChans[4] = {0};
EWRAM_LIB struct SoundInfo gSoundInfo = {0};
EWRAM_LIB MPlayFunc gMPlayJumpTable[34] = {0};
EWRAM_LIB u32 gUnknown_203AF08 = {0};
EWRAM_LIB u32 gUnknown_203AF0C = {0};
EWRAM_LIB struct CgbChannel gCgbChans[4] = {0};
u32 MidiKeyToFreq(struct WaveData *wav, u8 key, u8 fineAdjust)
{

View File

@ -1,22 +0,0 @@
.align 2
.include "src/code_8094F88.o"
.include "src/code_80958E8.o"
.include "src/code_8097670.o"
.include "src/exclusive_pokemon.o"
.include "src/ground_main.o"
.space 0x2
gUnknown_203B4A0: /* 203B4A0 (sub_809CCDC) */
.space 0xC
gNumChoices: /* 203B4AC (ExecuteScriptCommand) */
.space 0x4
gUnknown_203B4B0: /* 203B4B0 (sub_809D490 - HandleAction) */
.space 0x4
.include "src/ground_sprite.o"
.include "src/ground_link.o"

View File

@ -125,3 +125,13 @@
.include "src/game_options.o"
.include "src/code_8094D28.o"
.include "src/play_time.o"
.include "src/code_8094F88.o"
.include "src/code_80958E8.o"
.include "src/code_8097670.o"
.include "src/exclusive_pokemon.o"
.include "src/ground_main.o"
.include "src/code_809C5C4.o"
.include "src/ground_script_1.o"
.include "src/code_809D148.o"
.include "src/ground_sprite.o"
.include "src/ground_link.o"