mirror of
https://github.com/pret/pmd-red.git
synced 2026-07-01 00:41:13 -05:00
start wiring up ramscrgen for files
This commit is contained in:
parent
5a45039c2d
commit
68bc0c0b6d
6
Makefile
6
Makefile
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
#include "flash.h"
|
||||
#include "memory.h"
|
||||
|
||||
EWRAM_DATA u8 gFlashEnabled;
|
||||
u8 gFlashEnabled;
|
||||
|
||||
extern FlashIntrFunc *GetInterruptHandler(s32);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
12
src/m4a.c
12
src/m4a.c
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
24
src/music.c
24
src/music.c
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user