start wiring up ramscrgen for files

This commit is contained in:
Seth Barberee 2023-05-08 13:51:08 -07:00
parent 5a45039c2d
commit 68bc0c0b6d
13 changed files with 99 additions and 72 deletions

View File

@ -243,12 +243,12 @@ libagbsyscall:
$(BUILD_DIR)/sym_ewram.ld: sym_ewram.txt
$(RAMSCRGEN) ewram_data $< ENGLISH > $@
$(BUILD_DIR)/sym_ewram2.ld: sym_ewram2.txt
$(RAMSCRGEN) ewram_data $< ENGLISH > $@
$(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 > $@
$(LD_SCRIPT): ld_script.txt $(BUILD_DIR)/sym_ewram.ld $(BUILD_DIR)/sym_ewram2.ld $(BUILD_DIR)/sym_iwram.ld
cd $(BUILD_DIR) && sed -e "s#tools/#../../tools/#g" ../../ld_script.txt >ld_script.ld

View File

@ -49,6 +49,8 @@ void nullsub_20(u16 songIndex);
#define STOP_BGM 999
#define MAX_VOLUME 256
#define NUM_BG_PLAYERS (INDEX_FANFARE - INDEX_BGM) + 1 // 2
#define NUM_SE_PLAYERS (INDEX_SE6 - INDEX_SE1) + 1 // 6
enum MusicPlayerIndex
{

View File

@ -10,6 +10,7 @@ SECTIONS {
ALIGN(4)
{
ewram_start = .;
data/sound_data.o(.bss);
INCLUDE "sym_ewram.ld"
src/agb_flash.o(.bss);
*libgcc.a:fp-bit.o(.bss);

View File

@ -1,10 +1,58 @@
.equiv TRACK_SIZE, 0x50
.equiv NUM_TRACKS_BGM, 12
.equiv NUM_TRACKS_FANFARE, 6
.equiv NUM_TRACKS_SE1, 1
.equiv NUM_TRACKS_SE2, 1
.equiv NUM_TRACKS_SE3, 2
.equiv NUM_TRACKS_SE4, 2
.equiv NUM_TRACKS_SE5, 2
.equiv NUM_TRACKS_SE6, 1
.bss
gMPlayTrack_BGM::
.space TRACK_SIZE * NUM_TRACKS_BGM
.size gMPlayTrack_BGM, .-gMPlayTrack_BGM
gMPlayTrack_Fanfare::
.space TRACK_SIZE * NUM_TRACKS_FANFARE
.size gMPlayTrack_Fanfare, .-gMPlayTrack_Fanfare
gMPlayTrack_SE1::
.space TRACK_SIZE * NUM_TRACKS_SE1
.size gMPlayTrack_SE1, .-gMPlayTrack_SE1
gMPlayTrack_SE2::
.space TRACK_SIZE * NUM_TRACKS_SE2
.size gMPlayTrack_SE2, .-gMPlayTrack_SE2
gMPlayTrack_SE3::
.space TRACK_SIZE * NUM_TRACKS_SE3
.size gMPlayTrack_SE3, .-gMPlayTrack_SE3
gMPlayTrack_SE4::
.space TRACK_SIZE * NUM_TRACKS_SE4
.size gMPlayTrack_SE4, .-gMPlayTrack_SE4
gMPlayTrack_SE5::
.space TRACK_SIZE * NUM_TRACKS_SE5
.size gMPlayTrack_SE5, .-gMPlayTrack_SE5
gMPlayTrack_SE6::
.space TRACK_SIZE * NUM_TRACKS_SE6
.size gMPlayTrack_SE6, .-gMPlayTrack_SE6
.section .rodata
.align 2
gMPlayTable:: @ 9E8665C
music_player gMPlayInfo_BGM, gMPlayTrack_BGM, 12, 0
music_player gMPlayInfo_Fanfare, gMPlayTrack_Fanfare, 6, 0
music_player gMPlayInfo_SE1, gMPlayTrack_SE1, 1, 0
music_player gMPlayInfo_SE2, gMPlayTrack_SE2, 1, 0
music_player gMPlayInfo_SE3, gMPlayTrack_SE3, 2, 0
music_player gMPlayInfo_SE4, gMPlayTrack_SE4, 2, 0
music_player gMPlayInfo_SE5, gMPlayTrack_SE5, 2, 0
music_player gMPlayInfo_SE6, gMPlayTrack_SE6, 1, 0
music_player gMPlayInfo_BGM, gMPlayTrack_BGM, NUM_TRACKS_BGM, 0
music_player gMPlayInfo_Fanfare, gMPlayTrack_Fanfare, NUM_TRACKS_FANFARE, 0
music_player gMPlayInfo_SE1, gMPlayTrack_SE1, NUM_TRACKS_SE1, 0
music_player gMPlayInfo_SE2, gMPlayTrack_SE2, NUM_TRACKS_SE2, 0
music_player gMPlayInfo_SE3, gMPlayTrack_SE3, NUM_TRACKS_SE3, 0
music_player gMPlayInfo_SE4, gMPlayTrack_SE4, NUM_TRACKS_SE4, 0
music_player gMPlayInfo_SE5, gMPlayTrack_SE5, NUM_TRACKS_SE5, 0
music_player gMPlayInfo_SE6, gMPlayTrack_SE6, NUM_TRACKS_SE6, 0

View File

@ -1,6 +1,7 @@
#include "gba/defines.h"
#include "global.h"
extern u32 gUnknown_3004000;
IWRAM_DATA u32 gUnknown_3004000 = {0};
// unused, returns stack pointer
u32 sub_80001DC() {

View File

@ -34,7 +34,7 @@ struct unkStruct_3001B5C
u8 unk3F8[4];
};
extern struct unkStruct_3001B5C *gUnknown_3001B5C;
IWRAM_DATA struct unkStruct_3001B5C *gUnknown_3001B5C;
extern u32 gUnknown_203B298;
extern u16 gUnknown_203B29C;

View File

@ -3,7 +3,7 @@
#include "flash.h"
#include "memory.h"
EWRAM_DATA u8 gFlashEnabled;
u8 gFlashEnabled;
extern FlashIntrFunc *GetInterruptHandler(s32);

View File

@ -3,12 +3,12 @@
#include "debug.h"
#include "ground_script.h"
extern struct GroundScript_ExecutePP_1 *gUnknown_3001B6C;
IWRAM_DATA struct GroundScript_ExecutePP_1 *gUnknown_3001B6C = {0}; // iwram
IWRAM_DATA u8 *gUnknown_3001B70 = {0};
extern struct DebugLocation gUnknown_8117538[];
extern u8 gUnknown_811736C[];
extern u8 *gUnknown_3001B70;
extern void sub_809D600(void *, u8 *, u32, u32, u32);
extern void GroundMap_Reset(void);

View File

@ -17,12 +17,12 @@ struct unkStruct_3001B74
u32 unk20;
};
extern struct unkStruct_3001B74 *gUnknown_3001B74;
IWRAM_DATA struct unkStruct_3001B74 *gUnknown_3001B74 = {0}; // iwram
extern u16 gUnknown_2026E4E;
// size: 0x55C
extern u8 *gUnknown_3001B78;
IWRAM_DATA u8 *gUnknown_3001B78 = {0}; // iwram
extern u8 gUnknown_8117784[];
extern s16 gUnknown_811E5F4[][2];

View File

@ -1,9 +1,19 @@
#include "gba/defines.h"
#include "gba/m4a_internal.h"
#include "global.h"
extern const u8 gCgb3Vol[];
extern char SoundMainRAM_Buffer[0x400];
IWRAM_DATA char SoundMainRAM_Buffer[0x400] = {0};
extern struct MusicPlayerInfo gMPlayInfo_SE4;
extern struct MusicPlayerInfo gMPlayInfo_SE5;
extern struct MusicPlayerInfo gMPlayInfo_BGM; // BGM??
extern struct MusicPlayerInfo gMPlayInfo_SE6;
extern struct MusicPlayerInfo gMPlayInfo_Fanfare;
extern struct MusicPlayerInfo gMPlayInfo_SE1;
extern struct MusicPlayerInfo gMPlayInfo_SE3;
extern struct MusicPlayerInfo gMPlayInfo_SE2;
extern struct SoundInfo gSoundInfo;

View File

@ -12,8 +12,10 @@ EWRAM_DATA u16 gMusicTransitionCounter;
EWRAM_DATA bool8 gRestartBGM;
extern struct MusicPlayerInfo gMPlayInfo_BGM; // BGM??
extern struct PMDMusicPlayer gUnknown_3000FD8[8];
extern struct PMDMusicPlayer gUnknown_3000FE8[8];
// IWRAM
IWRAM_DATA struct PMDMusicPlayer gBGMusicPlayers[NUM_BG_PLAYERS] = {0};
IWRAM_DATA struct PMDMusicPlayer gSEMusicPlayers[NUM_SE_PLAYERS] = {0};
extern bool8 EnableInterrupts(void);
extern bool8 DisableInterrupts(void);
@ -40,7 +42,7 @@ void InitMusic(void)
gMusicTransitionCounter = 0;
gRestartBGM = FALSE;
for(playerIndex = INDEX_BGM, musicPlayer = &gUnknown_3000FD8[0]; playerIndex < INDEX_SE6 + 1; playerIndex++, musicPlayer++)
for(playerIndex = INDEX_BGM, musicPlayer = &gBGMusicPlayers[0]; playerIndex < INDEX_SE6 + 1; playerIndex++, musicPlayer++)
{
musicPlayer->unk0 = 0;
musicPlayer->songIndex = STOP_SOUND_EFFECT;
@ -293,7 +295,7 @@ void PlayFanfareSE(u16 songIndex, u16 volume)
if (!IsSoundEffect(songIndex))
return;
playerIndex = GetMusicPlayerIndex(songIndex);
musicPlayer = &gUnknown_3000FD8[playerIndex]; // need to load this before comparison to match
musicPlayer = &gBGMusicPlayers[playerIndex]; // need to load this before comparison to match
if (playerIndex < INDEX_SE1)
nullsub_20(songIndex);
else
@ -331,7 +333,7 @@ void SetSoundEffectVolume(u16 songIndex, u16 volume)
if ((!IsFanfare(songIndex)) && (IsSoundEffect(songIndex))) {
playerIndex = GetMusicPlayerIndex(songIndex);
info = gMPlayTable[playerIndex].info;
musicPlayer = &gUnknown_3000FD8[playerIndex];
musicPlayer = &gBGMusicPlayers[playerIndex];
if (playerIndex >= INDEX_SE1) {
interrupt_flag = DisableInterrupts();
if (musicPlayer->songIndex == songIndex) {
@ -360,7 +362,7 @@ void StopFanfareSE(u16 songIndex)
if (songIndex == STOP_SOUND_EFFECT) {
cVar1 = DisableInterrupts();
for(playerIndex2 = INDEX_SE1, musicPlayer1 = &gUnknown_3000FE8[0]; playerIndex2 < INDEX_SE6; playerIndex2++, musicPlayer1++)
for(playerIndex2 = INDEX_SE1, musicPlayer1 = &gSEMusicPlayers[0]; playerIndex2 < INDEX_SE6; playerIndex2++, musicPlayer1++)
{
m4aMPlayStop(gMPlayTable[playerIndex2].info);
musicPlayer1->unk0 = 0;
@ -376,7 +378,7 @@ void StopFanfareSE(u16 songIndex)
{
playerIndex = GetMusicPlayerIndex(songIndex);
info = gMPlayTable[playerIndex].info;
musicPlayer = &gUnknown_3000FD8[playerIndex];
musicPlayer = &gBGMusicPlayers[playerIndex];
if (playerIndex < INDEX_SE1) {
nullsub_21(songIndex);
}
@ -450,7 +452,7 @@ void FadeOutFanfareSE(u16 songIndex, u16 speed)
if (songIndex == STOP_SOUND_EFFECT) {
cVar1 = DisableInterrupts();
for(playerIndex2 = INDEX_SE1, musicPlayer1 = &gUnknown_3000FE8[0]; playerIndex2 < INDEX_SE6; playerIndex2++, musicPlayer1++)
for(playerIndex2 = INDEX_SE1, musicPlayer1 = &gSEMusicPlayers[0]; playerIndex2 < INDEX_SE6; playerIndex2++, musicPlayer1++)
{
if (musicPlayer1->songIndex != STOP_SOUND_EFFECT) {
if (IsMusicPlayerPlaying(playerIndex2)) {
@ -471,7 +473,7 @@ void FadeOutFanfareSE(u16 songIndex, u16 speed)
}
else if (IsSoundEffect(songIndex)) {
playerIndex = GetMusicPlayerIndex(songIndex);
musicPlayer = &gUnknown_3000FD8[playerIndex];
musicPlayer = &gBGMusicPlayers[playerIndex];
playerInfo = gMPlayTable[playerIndex].info;
cVar2 = DisableInterrupts();
if (musicPlayer->songIndex != STOP_SOUND_EFFECT) {
@ -546,7 +548,7 @@ bool8 IsFanfareSEPlaying(u16 songIndex)
{
if (IsSoundEffect(songIndex_u32)) {
playerIndex = GetMusicPlayerIndex(songIndex_u32);
musicPlayer = &gUnknown_3000FD8[playerIndex];
musicPlayer = &gBGMusicPlayers[playerIndex];
if ((INDEX_SE1 <= playerIndex) && (musicPlayer->songIndex == songIndex_u32_2)) {
return TRUE;
}
@ -701,7 +703,7 @@ void UpdateSound(void)
}
}
for(musicPlayerIndex = INDEX_SE1, musicPlayer = &gUnknown_3000FE8[0]; musicPlayerIndex < INDEX_SE6; musicPlayerIndex++, musicPlayer++)
for(musicPlayerIndex = INDEX_SE1, musicPlayer = &gSEMusicPlayers[0]; musicPlayerIndex < INDEX_SE6; musicPlayerIndex++, musicPlayer++)
{
if (musicPlayer->songIndex != STOP_SOUND_EFFECT)
{

View File

@ -1,26 +1,3 @@
gMPlayTrack_BGM: /* 2000000 */
.space 0x3C0
gMPlayTrack_Fanfare: /* 20003C0 */
.space 0x1E0
gMPlayTrack_SE1: /* 20005A0 */
.space 0x50
gMPlayTrack_SE2: /* 20005F0 */
.space 0x50
gMPlayTrack_SE3: /* 2000640 */
.space 0xA0
gMPlayTrack_SE4: /* 20006E0 */
.space 0xA0
gMPlayTrack_SE5: /* 2000780 */
.space 0xA0
gMPlayTrack_SE6: /* 2000820 */
.space 0x50
gMPlayInfo_SE4: /* 2000870 */
.space 0x40

View File

@ -1,5 +1,4 @@
SoundMainRAM_Buffer: /* 3000000 */
.space 0x400
.include "src/m4a.o"
gUnknown_3000400: /* 3000400 */
.space 0x800
@ -10,11 +9,7 @@ gUnknown_3000C00: /* 3000C00 */
gUnknown_3000E94: /* 3000E94 */
.space 0x144
gUnknown_3000FD8: /* 3000FD8 */
.space 0x10
gUnknown_3000FE8: /* 3000FE8 */
.space 0x30
.include "src/music.o"
gUnknown_3001018: /* 3001018 */
.space 0x180
@ -44,17 +39,8 @@ gUnknown_3001B64: /* 3001B64 */
gUnknown_3001B68: /* 3001B68 */
.space 0x4
gUnknown_3001B6C: /* 3001B6C */
.space 0x4
gUnknown_3001B70: /* 3001B70 */
.space 0x4
gUnknown_3001B74: /* 3001B74 */
.space 0x4
gUnknown_3001B78: /* 3001B78 */
.space 0x4
.include "src/ground_map.o"
.include "src/ground_map_2.o"
gUnknown_3001B7C: /* 3001B7C */
.space 0x4
@ -74,4 +60,4 @@ gUnknown_3001B8C: /* 3001B8C */
gUnknown_3001B90: /* 3001B90 */
.space 0x2470
gUnknown_3004000: /* 3004000 */
.include "src/code_80001DC.o"