Use Romfile in place of vromStart and vromEnd in structs (#1618)

* DmaEntry

* KaleidoMgrOverlay

* ActorOverlay

* EffectSsOverlay

* GameStateOverlay

* TransitionOverlay
This commit is contained in:
Derek Hensley 2024-05-12 10:08:52 -07:00 committed by GitHub
parent 0e8b225279
commit 6d315fa2ae
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
20 changed files with 97 additions and 92 deletions

19
include/romfile.h Normal file
View File

@ -0,0 +1,19 @@
#ifndef ROMFILE_H
#define ROMFILE_H
#include "ultra64.h"
#include "libc/stdint.h"
typedef struct {
/* 0x00 */ uintptr_t vromStart;
/* 0x04 */ uintptr_t vromEnd;
} RomFile; // size = 0x8
#define ROM_FILE(name) \
{ (uintptr_t)_##name##SegmentRomStart, (uintptr_t)_##name##SegmentRomEnd }
#define ROM_FILE_EMPTY(name) \
{ (uintptr_t)_##name##SegmentRomStart, (uintptr_t)_##name##SegmentRomStart }
#define ROM_FILE_UNSET \
{ 0, 0 }
#endif

View File

@ -4,6 +4,8 @@
#include "libc/stddef.h" #include "libc/stddef.h"
#include "PR/ultratypes.h" #include "PR/ultratypes.h"
#include "romfile.h"
#define DECLARE_SEGMENT(name) \ #define DECLARE_SEGMENT(name) \
extern u8 _##name##SegmentStart[]; \ extern u8 _##name##SegmentStart[]; \
extern u8 _##name##SegmentEnd[]; extern u8 _##name##SegmentEnd[];
@ -34,13 +36,6 @@
#define SEGMENT_BSS_END(segment) (_ ## segment ## SegmentBssEnd) #define SEGMENT_BSS_END(segment) (_ ## segment ## SegmentBssEnd)
#define SEGMENT_BSS_SIZE(segment) ((uintptr_t)SEGMENT_BSS_END(segment) - (uintptr_t)SEGMENT_BSS_START(segment)) #define SEGMENT_BSS_SIZE(segment) ((uintptr_t)SEGMENT_BSS_END(segment) - (uintptr_t)SEGMENT_BSS_START(segment))
#define ROM_FILE(name) \
{ SEGMENT_ROM_START(name), SEGMENT_ROM_END(name) }
#define ROM_FILE_EMPTY(name) \
{ SEGMENT_ROM_START(name), SEGMENT_ROM_START(name) }
#define ROM_FILE_UNSET \
{ 0, 0 }
DECLARE_SEGMENT(framebuffer_lo) DECLARE_SEGMENT(framebuffer_lo)
DECLARE_SEGMENT(boot) DECLARE_SEGMENT(boot)

View File

@ -31,8 +31,7 @@ typedef enum AllocType {
} AllocType; } AllocType;
typedef struct ActorOverlay { typedef struct ActorOverlay {
/* 0x00 */ uintptr_t vromStart; /* 0x00 */ RomFile file;
/* 0x04 */ uintptr_t vromEnd;
/* 0x08 */ void* vramStart; /* 0x08 */ void* vramStart;
/* 0x0C */ void* vramEnd; /* 0x0C */ void* vramEnd;
/* 0x10 */ void* loadedRamAddr; // original name: "allocp" /* 0x10 */ void* loadedRamAddr; // original name: "allocp"

View File

@ -4,6 +4,8 @@
#include "ultra64.h" #include "ultra64.h"
#include "unk.h" #include "unk.h"
#include "romfile.h"
typedef struct { typedef struct {
/* 0x00 */ uintptr_t vromAddr; // VROM address (source) /* 0x00 */ uintptr_t vromAddr; // VROM address (source)
/* 0x04 */ void* dramAddr; // DRAM address (destination) /* 0x04 */ void* dramAddr; // DRAM address (destination)
@ -15,14 +17,8 @@ typedef struct {
/* 0x1C */ OSMesg notifyMsg; // Completion notification message /* 0x1C */ OSMesg notifyMsg; // Completion notification message
} DmaRequest; // size = 0x20 } DmaRequest; // size = 0x20
typedef struct RomFile {
/* 0x0 */ uintptr_t vromStart;
/* 0x4 */ uintptr_t vromEnd;
} RomFile; // size = 0x8
typedef struct { typedef struct {
/* 0x0 */ uintptr_t vromStart; /* 0x0 */ RomFile file;
/* 0x4 */ uintptr_t vromEnd;
/* 0x8 */ uintptr_t romStart; /* 0x8 */ uintptr_t romStart;
/* 0xC */ uintptr_t romEnd; /* 0xC */ uintptr_t romEnd;
} DmaEntry; // size = 0x10 } DmaEntry; // size = 0x10

View File

@ -6,6 +6,7 @@
#include "color.h" #include "color.h"
#include "z64math.h" #include "z64math.h"
#include "z64dma.h"
#include "z64eff_ss_dead.h" #include "z64eff_ss_dead.h"
struct Actor; struct Actor;
@ -37,8 +38,7 @@ typedef struct EffectSsInit {
} EffectSsInit; // size = 0x8 } EffectSsInit; // size = 0x8
typedef struct EffectSsOverlay { typedef struct EffectSsOverlay {
/* 0x00 */ uintptr_t vromStart; /* 0x00 */ RomFile file;
/* 0x04 */ uintptr_t vromEnd;
/* 0x08 */ void* vramStart; /* 0x08 */ void* vramStart;
/* 0x0C */ void* vramEnd; /* 0x0C */ void* vramEnd;
/* 0x10 */ void* loadedRamAddr; /* 0x10 */ void* loadedRamAddr;

View File

@ -8,6 +8,7 @@
#include "gamealloc.h" #include "gamealloc.h"
#include "padmgr.h" #include "padmgr.h"
#include "padutils.h" #include "padutils.h"
#include "romfile.h"
#include "tha.h" #include "tha.h"
#include "unk.h" #include "unk.h"
@ -31,8 +32,7 @@ typedef void (*GameStateFunc)(struct GameState* gameState);
typedef struct GameStateOverlay { typedef struct GameStateOverlay {
/* 0x00 */ void* loadedRamAddr; /* 0x00 */ void* loadedRamAddr;
/* 0x04 */ uintptr_t vromStart; // if applicable /* 0x04 */ RomFile file; // if applicable
/* 0x08 */ uintptr_t vromEnd; // if applicable
/* 0x0C */ void* vramStart; // if applicable /* 0x0C */ void* vramStart; // if applicable
/* 0x10 */ void* vramEnd; // if applicable /* 0x10 */ void* vramEnd; // if applicable
/* 0x14 */ UNK_PTR unk_14; /* 0x14 */ UNK_PTR unk_14;

View File

@ -2,6 +2,7 @@
#define Z64PAUSE_MENU_H #define Z64PAUSE_MENU_H
#include "ultra64.h" #include "ultra64.h"
#include "romfile.h"
#include "z64math.h" #include "z64math.h"
#include "z64view.h" #include "z64view.h"
#include "unk.h" #include "unk.h"
@ -197,8 +198,7 @@ typedef enum KaleidoMgrOverlayType {
typedef struct KaleidoMgrOverlay { typedef struct KaleidoMgrOverlay {
/* 0x00 */ void* loadedRamAddr; /* 0x00 */ void* loadedRamAddr;
/* 0x04 */ uintptr_t vromStart; /* 0x04 */ RomFile file;
/* 0x08 */ uintptr_t vromEnd;
/* 0x0C */ void* vramStart; /* 0x0C */ void* vramStart;
/* 0x10 */ void* vramEnd; /* 0x10 */ void* vramEnd;
/* 0x14 */ uintptr_t offset; // loadedRamAddr - vramStart /* 0x14 */ uintptr_t offset; // loadedRamAddr - vramStart

View File

@ -6,6 +6,8 @@
#include "libc/stdint.h" #include "libc/stdint.h"
#include "unk.h" #include "unk.h"
#include "romfile.h"
#include "overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.h" #include "overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.h"
#include "overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.h" #include "overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.h"
#include "overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.h" #include "overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.h"
@ -71,8 +73,7 @@ typedef struct TransitionOverlay {
} loadInfo; } loadInfo;
/* 0x04 */ void* vramStart; /* 0x04 */ void* vramStart;
/* 0x08 */ void* vramEnd; /* 0x08 */ void* vramEnd;
/* 0x0C */ uintptr_t vromStart; /* 0x0C */ RomFile file;
/* 0x10 */ uintptr_t vromEnd;
/* 0x14 */ TransitionInit* initInfo; /* 0x14 */ TransitionInit* initInfo;
/* 0x18 */ size_t size; /* 0x18 */ size_t size;
} TransitionOverlay; } TransitionOverlay;

View File

@ -114,8 +114,8 @@ s32 DmaMgr_AudioDmaHandler(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction) {
DmaEntry* DmaMgr_FindDmaEntry(uintptr_t vrom) { DmaEntry* DmaMgr_FindDmaEntry(uintptr_t vrom) {
DmaEntry* entry; DmaEntry* entry;
for (entry = gDmaDataTable; entry->vromEnd != 0; entry++) { for (entry = gDmaDataTable; entry->file.vromEnd != 0; entry++) {
if ((vrom >= entry->vromStart) && (vrom < entry->vromEnd)) { if ((vrom >= entry->file.vromStart) && (vrom < entry->file.vromEnd)) {
return entry; return entry;
} }
} }
@ -128,10 +128,10 @@ s32 DmaMgr_TranslateVromToRom(uintptr_t vrom) {
if (entry != NULL) { if (entry != NULL) {
if (entry->romEnd == 0) { if (entry->romEnd == 0) {
return vrom + entry->romStart - entry->vromStart; return vrom + entry->romStart - entry->file.vromStart;
} }
if (vrom == entry->vromStart) { if (vrom == entry->file.vromStart) {
return entry->romStart; return entry->romStart;
} }
@ -169,23 +169,23 @@ void DmaMgr_ProcessRequest(DmaRequest* req) {
if (entry->romEnd == 0) { if (entry->romEnd == 0) {
// romEnd of 0 indicates that the file is uncompressed. Files that are stored uncompressed can have // romEnd of 0 indicates that the file is uncompressed. Files that are stored uncompressed can have
// only part of their content loaded into RAM, so DMA only the requested region. // only part of their content loaded into RAM, so DMA only the requested region.
if (entry->vromEnd < (vrom + size)) { if (entry->file.vromEnd < (vrom + size)) {
// Error, vrom + size ends up in a different file than it started in // Error, vrom + size ends up in a different file than it started in
Fault_AddHungupAndCrash("../z_std_dma.c", 499); Fault_AddHungupAndCrash("../z_std_dma.c", 499);
} }
DmaMgr_DmaRomToRam((entry->romStart + vrom) - entry->vromStart, ram, size); DmaMgr_DmaRomToRam((entry->romStart + vrom) - entry->file.vromStart, ram, size);
} else { } else {
// File is compressed. Files that are stored compressed must be loaded into RAM all at once. // File is compressed. Files that are stored compressed must be loaded into RAM all at once.
romSize = entry->romEnd - entry->romStart; romSize = entry->romEnd - entry->romStart;
romStart = entry->romStart; romStart = entry->romStart;
if (vrom != entry->vromStart) { if (vrom != entry->file.vromStart) {
// Error, requested vrom is not the start of a file // Error, requested vrom is not the start of a file
Fault_AddHungupAndCrash("../z_std_dma.c", 518); Fault_AddHungupAndCrash("../z_std_dma.c", 518);
} }
if (size != (entry->vromEnd - entry->vromStart)) { if (size != (entry->file.vromEnd - entry->file.vromStart)) {
// Error, only part of the file was requested // Error, only part of the file was requested
Fault_AddHungupAndCrash("../z_std_dma.c", 525); Fault_AddHungupAndCrash("../z_std_dma.c", 525);
} }
@ -290,7 +290,7 @@ void DmaMgr_Init(void) {
DmaEntry* entry = gDmaDataTable; DmaEntry* entry = gDmaDataTable;
s32 index = 0; s32 index = 0;
while (entry->vromEnd != 0) { while (entry->file.vromEnd != 0) {
entry++; entry++;
index++; index++;
} }

View File

@ -362,7 +362,7 @@ void Graph_ThreadEntry(void* arg) {
size = ovl->instanceSize; size = ovl->instanceSize;
func_800809F4(ovl->vromStart); func_800809F4(ovl->file.vromStart);
gameState = malloc(size); gameState = malloc(size);

View File

@ -17,8 +17,8 @@ void Overlay_LoadGameState(GameStateOverlay* overlayEntry) {
return; return;
} }
overlayEntry->loadedRamAddr = overlayEntry->loadedRamAddr = Overlay_AllocateAndLoad(overlayEntry->file.vromStart, overlayEntry->file.vromEnd,
Overlay_AllocateAndLoad(overlayEntry->vromStart, overlayEntry->vromEnd, vramStart, overlayEntry->vramEnd); vramStart, overlayEntry->vramEnd);
if (overlayEntry->loadedRamAddr != NULL) { if (overlayEntry->loadedRamAddr != NULL) {
overlayEntry->unk_14 = (void*)(uintptr_t)((overlayEntry->unk_14 != NULL) overlayEntry->unk_14 = (void*)(uintptr_t)((overlayEntry->unk_14 != NULL)

View File

@ -3299,8 +3299,8 @@ ActorInit* Actor_LoadOverlay(ActorContext* actorCtx, s16 index) {
return NULL; return NULL;
} }
Overlay_Load(overlayEntry->vromStart, overlayEntry->vromEnd, overlayEntry->vramStart, overlayEntry->vramEnd, Overlay_Load(overlayEntry->file.vromStart, overlayEntry->file.vromEnd, overlayEntry->vramStart,
overlayEntry->loadedRamAddr); overlayEntry->vramEnd, overlayEntry->loadedRamAddr);
overlayEntry->numLoaded = 0; overlayEntry->numLoaded = 0;
} }

View File

@ -17,18 +17,21 @@
// Actor Overlay Table definition // Actor Overlay Table definition
#define DEFINE_ACTOR(name, _enumValue, allocType, _debugName) \ #define DEFINE_ACTOR(name, _enumValue, allocType, _debugName) \
{ SEGMENT_ROM_START(ovl_##name), \ { \
SEGMENT_ROM_END(ovl_##name), \ ROM_FILE(ovl_##name), \
SEGMENT_START(ovl_##name), \ SEGMENT_START(ovl_##name), \
SEGMENT_END(ovl_##name), \ SEGMENT_END(ovl_##name), \
NULL, \ NULL, \
&name##_InitVars, \ &name##_InitVars, \
NULL, \ NULL, \
allocType, \ allocType, \
0 }, 0, \
},
#define DEFINE_ACTOR_INTERNAL(name, _enumValue, allocType, _debugName) \ #define DEFINE_ACTOR_INTERNAL(name, _enumValue, allocType, _debugName) \
{ 0, 0, NULL, NULL, NULL, &name##_InitVars, NULL, allocType, 0 }, { \
ROM_FILE_UNSET, NULL, NULL, NULL, &name##_InitVars, NULL, allocType, 0, \
},
#define DEFINE_ACTOR_UNSET(_enumValue) { 0 }, #define DEFINE_ACTOR_UNSET(_enumValue) { 0 },

View File

@ -191,8 +191,8 @@ void EffectSs_Spawn(PlayState* play, s32 type, s32 priority, void* initData) {
return; return;
} }
Overlay_Load(overlayEntry->vromStart, overlayEntry->vromEnd, overlayEntry->vramStart, overlayEntry->vramEnd, Overlay_Load(overlayEntry->file.vromStart, overlayEntry->file.vromEnd, overlayEntry->vramStart,
overlayEntry->loadedRamAddr); overlayEntry->vramEnd, overlayEntry->loadedRamAddr);
} }
initInfo = (void*)(uintptr_t)((overlayEntry->initInfo != NULL) initInfo = (void*)(uintptr_t)((overlayEntry->initInfo != NULL)

View File

@ -15,13 +15,7 @@
#define DEFINE_EFFECT_SS(name, _enumValue) \ #define DEFINE_EFFECT_SS(name, _enumValue) \
{ \ { \
SEGMENT_ROM_START(ovl_##name), \ ROM_FILE(ovl_##name), SEGMENT_START(ovl_##name), SEGMENT_END(ovl_##name), NULL, &name##_InitVars, 1, \
SEGMENT_ROM_END(ovl_##name), \
SEGMENT_START(ovl_##name), \
SEGMENT_END(ovl_##name), \
NULL, \
&name##_InitVars, \
1, \
}, },
#define DEFINE_EFFECT_SS_UNSET(_enumValue) { 0 }, #define DEFINE_EFFECT_SS_UNSET(_enumValue) { 0 },

View File

@ -20,8 +20,7 @@
{ 0, 0 }, \ { 0, 0 }, \
SEGMENT_START(ovl_##name), \ SEGMENT_START(ovl_##name), \
SEGMENT_END(ovl_##name), \ SEGMENT_END(ovl_##name), \
SEGMENT_ROM_START(ovl_##name), \ ROM_FILE(ovl_##name), \
SEGMENT_ROM_END(ovl_##name), \
&structName##_InitVars, \ &structName##_InitVars, \
sizeof(structName), \ sizeof(structName), \
}, },

View File

@ -17,12 +17,15 @@
// Gamestate Overlay Table definition // Gamestate Overlay Table definition
#define DEFINE_GAMESTATE_INTERNAL(typeName, _enumName) \ #define DEFINE_GAMESTATE_INTERNAL(typeName, _enumName) \
{ NULL, 0, 0, NULL, NULL, NULL, typeName##_Init, typeName##_Destroy, NULL, NULL, 0, sizeof(typeName##State) }, { \
NULL, ROM_FILE_UNSET, NULL, NULL, NULL, typeName##_Init, typeName##_Destroy, NULL, NULL, \
0, sizeof(typeName##State), \
},
#define DEFINE_GAMESTATE(typeName, _enumName, segmentName) \ #define DEFINE_GAMESTATE(typeName, _enumName, segmentName) \
{ NULL, \ { \
(uintptr_t)SEGMENT_ROM_START(ovl_##segmentName), \ NULL, \
(uintptr_t)SEGMENT_ROM_END(ovl_##segmentName), \ ROM_FILE(ovl_##segmentName), \
SEGMENT_START(ovl_##segmentName), \ SEGMENT_START(ovl_##segmentName), \
SEGMENT_END(ovl_##segmentName), \ SEGMENT_END(ovl_##segmentName), \
NULL, \ NULL, \
@ -31,7 +34,8 @@
NULL, \ NULL, \
NULL, \ NULL, \
0, \ 0, \
sizeof(typeName##State) }, sizeof(typeName##State), \
},
GameStateOverlay gGameStateOverlayTable[GAMESTATE_ID_MAX] = { GameStateOverlay gGameStateOverlayTable[GAMESTATE_ID_MAX] = {
#include "tables/gamestate_table.h" #include "tables/gamestate_table.h"

View File

@ -5,10 +5,7 @@
#include "loadfragment.h" #include "loadfragment.h"
#define KALEIDO_OVERLAY(name) \ #define KALEIDO_OVERLAY(name) \
{ \ { NULL, ROM_FILE(ovl_##name), SEGMENT_START(ovl_##name), SEGMENT_END(ovl_##name), 0, #name }
NULL, SEGMENT_ROM_START(ovl_##name), SEGMENT_ROM_END(ovl_##name), SEGMENT_START(ovl_##name), \
SEGMENT_END(ovl_##name), 0, #name, \
}
KaleidoMgrOverlay gKaleidoMgrOverlayTable[KALEIDO_OVL_MAX] = { KaleidoMgrOverlay gKaleidoMgrOverlayTable[KALEIDO_OVL_MAX] = {
KALEIDO_OVERLAY(kaleido_scope), KALEIDO_OVERLAY(kaleido_scope),
@ -43,7 +40,7 @@ uintptr_t KaleidoManager_FaultAddrConv(uintptr_t address, void* param) {
void KaleidoManager_LoadOvl(KaleidoMgrOverlay* ovl) { void KaleidoManager_LoadOvl(KaleidoMgrOverlay* ovl) {
ovl->loadedRamAddr = sKaleidoAreaPtr; ovl->loadedRamAddr = sKaleidoAreaPtr;
Overlay_Load(ovl->vromStart, ovl->vromEnd, ovl->vramStart, ovl->vramEnd, ovl->loadedRamAddr); Overlay_Load(ovl->file.vromStart, ovl->file.vromEnd, ovl->vramStart, ovl->vramEnd, ovl->loadedRamAddr);
ovl->offset = (uintptr_t)ovl->loadedRamAddr - (uintptr_t)ovl->vramStart; ovl->offset = (uintptr_t)ovl->loadedRamAddr - (uintptr_t)ovl->vramStart;
gKaleidoMgrCurOvl = ovl; gKaleidoMgrCurOvl = ovl;
} }

View File

@ -31,7 +31,7 @@ TransitionOverlayStatus TransitionOverlay_Load(TransitionOverlay* overlayEntry)
s32 count; s32 count;
void* loadedRamAddr; void* loadedRamAddr;
if (overlayEntry->vromStart == 0) { if (overlayEntry->file.vromStart == 0) {
return TRANSITION_OVERLAY_STATUS_INTERNAL; return TRANSITION_OVERLAY_STATUS_INTERNAL;
} }
@ -42,8 +42,8 @@ TransitionOverlayStatus TransitionOverlay_Load(TransitionOverlay* overlayEntry)
return TRANSITION_OVERLAY_STATUS_FAILED; return TRANSITION_OVERLAY_STATUS_FAILED;
} }
Overlay_Load(overlayEntry->vromStart, overlayEntry->vromEnd, overlayEntry->vramStart, overlayEntry->vramEnd, Overlay_Load(overlayEntry->file.vromStart, overlayEntry->file.vromEnd, overlayEntry->vramStart,
loadedRamAddr); overlayEntry->vramEnd, loadedRamAddr);
overlayEntry->loadInfo.addr = Lib_VirtualToPhysical(loadedRamAddr); overlayEntry->loadInfo.addr = Lib_VirtualToPhysical(loadedRamAddr);
overlayEntry->loadInfo.count = 1; overlayEntry->loadInfo.count = 1;
return TRANSITION_OVERLAY_STATUS_LOAD_FREE; return TRANSITION_OVERLAY_STATUS_LOAD_FREE;
@ -68,7 +68,7 @@ TransitionOverlayStatus TransitionOverlay_Free(TransitionOverlay* overlayEntry)
s32 count; s32 count;
void* loadedRamAddr; void* loadedRamAddr;
if (overlayEntry->vromStart == 0) { if (overlayEntry->file.vromStart == 0) {
return TRANSITION_OVERLAY_STATUS_INTERNAL; return TRANSITION_OVERLAY_STATUS_INTERNAL;
} }
@ -98,6 +98,6 @@ void TransitionOverlay_SetSegment(TransitionOverlay* overlayEntry, void* vramSta
uintptr_t vromEnd) { uintptr_t vromEnd) {
overlayEntry->vramStart = vramStart; overlayEntry->vramStart = vramStart;
overlayEntry->vramEnd = vramEnd; overlayEntry->vramEnd = vramEnd;
overlayEntry->vromStart = vromStart; overlayEntry->file.vromStart = vromStart;
overlayEntry->vromEnd = vromEnd; overlayEntry->file.vromEnd = vromEnd;
} }

View File

@ -11,10 +11,8 @@
#undef DEFINE_DMA_ENTRY_SYMS #undef DEFINE_DMA_ENTRY_SYMS
// dmadata Table definition // dmadata Table definition
#define DEFINE_DMA_ENTRY(name, _nameString) \ #define DEFINE_DMA_ENTRY(name, _nameString) { ROM_FILE(name), SEGMENT_ROM_START(name), 0 },
{ SEGMENT_ROM_START(name), SEGMENT_ROM_END(name), SEGMENT_ROM_START(name), 0 }, #define DEFINE_DMA_ENTRY_SYMS(name, _nameString) { ROM_FILE(name), 0xFFFFFFFF, 0xFFFFFFFF },
#define DEFINE_DMA_ENTRY_SYMS(name, _nameString) \
{ SEGMENT_ROM_START(name), SEGMENT_ROM_END(name), 0xFFFFFFFF, 0xFFFFFFFF },
DmaEntry gDmaDataTable[] = { DmaEntry gDmaDataTable[] = {
#include "tables/dmadata_table.h" #include "tables/dmadata_table.h"