mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
Documented unknown_080420 as screen_asset
This commit is contained in:
@@ -7838,12 +7838,10 @@ glabel ASSET_SECTION_9_END
|
||||
|
||||
.balign 16
|
||||
glabel ASSET_SECTION_10
|
||||
# Empty
|
||||
glabel ASSET_SECTION_10_END
|
||||
|
||||
.balign 16
|
||||
glabel ASSET_SECTION_11
|
||||
# Empty table
|
||||
.word ASSET_SECTION_10_END - ASSET_SECTION_10
|
||||
.word 0xFFFFFFFF
|
||||
glabel ASSET_SECTION_11_END
|
||||
|
||||
@@ -118,12 +118,13 @@
|
||||
"type": "Table"
|
||||
},
|
||||
{
|
||||
"name": "EMPTY_10",
|
||||
"type": "Empty",
|
||||
"name": "SCREENS",
|
||||
"type": "Binary",
|
||||
"folder": "screens",
|
||||
"table": 11
|
||||
},
|
||||
{
|
||||
"name": "EMPTY_10_TABLE",
|
||||
"name": "SCREENS_TABLE",
|
||||
"type": "Table"
|
||||
},
|
||||
{
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
#ifndef _GBI_H_
|
||||
#define _GBI_H_
|
||||
|
||||
#define F3D_OLD
|
||||
|
||||
#include <PR/ultratypes.h>
|
||||
|
||||
/*
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
#define ASSET_GAME_TEXT_TABLE 7
|
||||
#define ASSET_MENU_TEXT 8
|
||||
#define ASSET_MENU_TEXT_TABLE 9
|
||||
#define ASSET_EMPTY_10 10
|
||||
#define ASSET_EMPTY_10_TABLE 11
|
||||
#define ASSET_SCREENS 10
|
||||
#define ASSET_SCREENS_TABLE 11
|
||||
#define ASSET_SPRITES 12
|
||||
#define ASSET_SPRITES_TABLE 13
|
||||
#define ASSET_EMPTY_14 14
|
||||
|
||||
+22
-2
@@ -17,6 +17,7 @@
|
||||
#define DKR_CC_UNK7 TEXEL1, TEXEL0, PRIMITIVE, TEXEL0, TEXEL1, TEXEL0, PRIMITIVE, TEXEL0
|
||||
#define DKR_CC_UNK8 COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED
|
||||
#define DKR_CC_UNK9 PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0
|
||||
#define DKR_CC_UNK10 TEXEL0, 0, SCALE, 0, 0, 0, 0, TEXEL0
|
||||
#define DKR_CC_DECALFADEPRIM 0, 0, 0, TEXEL0, TEXEL0, 0, PRIMITIVE, 0
|
||||
|
||||
// For some reason DKR has a value for G_MDSFT_BLENDMASK, despite the fact that it is unsupported.
|
||||
@@ -34,6 +35,10 @@
|
||||
#define DKR_OMH_2CYC_BILERP DKR_OMH_COMMON | G_CYC_2CYCLE | G_TT_NONE | G_TF_BILERP | G_TP_PERSP
|
||||
#define DKR_OMH_2CYC_POINT DKR_OMH_COMMON | G_CYC_2CYCLE | G_TT_NONE | G_TF_POINT | G_TP_PERSP
|
||||
#define DKR_OMH_2CYC_CI_BILERP DKR_OMH_COMMON | G_CYC_2CYCLE | G_TT_RGBA16 | G_TF_BILERP | G_TP_PERSP
|
||||
|
||||
#define DKR_OMH_COPY_POINT_NOPERSP G_DKR_BLENDMASK | G_PM_NPRIMITIVE | G_TD_CLAMP | G_TL_TILE | G_TC_FILT \
|
||||
| G_CK_NONE | G_CD_DISABLE | G_AD_PATTERN | G_CYC_COPY | G_TT_NONE \
|
||||
| G_TF_POINT | G_TP_NONE
|
||||
|
||||
// OtherMode_L values.
|
||||
#define DKR_OML_COMMON G_AC_NONE | G_ZS_PIXEL
|
||||
@@ -55,8 +60,23 @@
|
||||
#define fast3d_cmd(pkt, word0, word1) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx*)(pkt); \
|
||||
_g->w0 = word0; \
|
||||
_g->w1 = word1; \
|
||||
_g->words.w0 = word0; \
|
||||
_g->words.w1 = word1; \
|
||||
}
|
||||
|
||||
/****** F3DDKR display list commands ******/
|
||||
|
||||
#define G_DMADL 7
|
||||
|
||||
#define numberOfGfxCommands(gfxCmds) (sizeof(gfxCmds) / sizeof(Gwords))
|
||||
|
||||
#define gDkrDmaDisplayList(pkt, address, numberOfCommands) \
|
||||
{ \
|
||||
Gfx *_g = (Gfx *)(pkt); \
|
||||
\
|
||||
_g->words.w0 = (_SHIFTL(G_DMADL, 24, 8) | _SHIFTL((numberOfCommands), 16, 8) | \
|
||||
_SHIFTL((numberOfCommands*8), 0, 16)); \
|
||||
_g->words.w1 = (unsigned int)(address); \
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
+36
-28
@@ -7,7 +7,7 @@
|
||||
#include "types.h"
|
||||
#include "macros.h"
|
||||
#include "structs.h"
|
||||
#include "fast3d.h"
|
||||
#include "f3ddkr.h"
|
||||
|
||||
/**
|
||||
* @file Contains all the code used for every menu in the game.
|
||||
@@ -1248,19 +1248,18 @@ s16 D_800E1768[12] = {
|
||||
0x3A, 0x3B, -1, 0
|
||||
};
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
u32 D_800E1780[22] = {
|
||||
0xE7000000, 0x00000000,
|
||||
0xBA001402, 0x00000000,
|
||||
0xBA001001, 0x00000000,
|
||||
0xBA000E02, 0x00000000,
|
||||
0xBA001102, 0x00000000,
|
||||
0xBA001301, 0x00000000,
|
||||
0xBA000C02, 0x00002000,
|
||||
0xBA000903, 0x00000C00,
|
||||
0xB9000002, 0x00000000,
|
||||
0xB900031D, 0x00504340,
|
||||
0xB8000000, 0x00000000
|
||||
Gfx D_800E1780[11] = {
|
||||
gsDPPipeSync(),
|
||||
gsDPSetCycleType(G_CYC_1CYCLE),
|
||||
gsDPSetTextureLOD(G_TL_TILE),
|
||||
gsDPSetTextureLUT(G_TT_NONE),
|
||||
gsDPSetTextureDetail(G_TD_CLAMP),
|
||||
gsDPSetTexturePersp(G_TP_NONE),
|
||||
gsDPSetTextureFilter(G_TF_BILERP),
|
||||
gsDPSetTextureConvert(G_TC_FILT),
|
||||
gsDPSetAlphaCompare(G_AC_NONE),
|
||||
gsDPSetRenderMode(G_RM_CLD_SURF, G_RM_CLD_SURF2),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
s16 D_800E17D8[12] = {
|
||||
@@ -1390,20 +1389,29 @@ MenuElement D_800E1B50[9] = {
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0, 0, 0, 0 }
|
||||
};
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
u32 D_800E1C70[24] = {
|
||||
0xE7000000, 0x00000000,
|
||||
0xBA001001, 0x00000000,
|
||||
0xBA000E02, 0x00000000,
|
||||
0xB9000002, 0x00000000,
|
||||
0xB6000000, 0x00010001,
|
||||
0xB8000000, 0x00000000,
|
||||
0xFCFFFFFF, 0xFFFE793C,
|
||||
0xEF000C0F, 0x00504240,
|
||||
0xFC121824, 0xFF33FFFF,
|
||||
0xEF082C0F, 0x00504240,
|
||||
0xFCFFFFFF, 0xFFFDF6FB,
|
||||
0xEF000C0F, 0x00504240
|
||||
Gfx D_800E1C70[] = {
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTextureLOD(G_TL_TILE),
|
||||
gsDPSetTextureLUT(G_TT_NONE),
|
||||
gsDPSetAlphaCompare(G_AC_NONE),
|
||||
gsSPClearGeometryMode(G_ZBUFFER | G_FOG),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
// Unused?
|
||||
Gfx D_800E1CA0[][2] = {
|
||||
{
|
||||
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
|
||||
gsDPSetOtherMode(DKR_OMH_1CYC_POINT_NOPERSP, DKR_OML_COMMON | G_RM_XLU_SURF | G_RM_XLU_SURF2),
|
||||
},
|
||||
{
|
||||
gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),
|
||||
gsDPSetOtherMode(DKR_OMH_1CYC_BILERP, DKR_OML_COMMON | G_RM_XLU_SURF | G_RM_XLU_SURF2),
|
||||
},
|
||||
{
|
||||
gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PRIMITIVE),
|
||||
gsDPSetOtherMode(DKR_OMH_1CYC_POINT_NOPERSP, DKR_OML_COMMON | G_RM_XLU_SURF | G_RM_XLU_SURF2),
|
||||
}
|
||||
};
|
||||
|
||||
s8 D_800E1CD0[32] = {
|
||||
|
||||
+2
-4
@@ -541,8 +541,7 @@ extern s16 D_800E1754[10];
|
||||
|
||||
extern s16 D_800E1768[12];
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800E1780[22];
|
||||
//extern u32 D_800E1780[22];
|
||||
|
||||
extern s16 D_800E17D8[12];
|
||||
|
||||
@@ -570,8 +569,7 @@ extern s32 gViewingCreditsFromCheat;
|
||||
|
||||
extern MenuElement D_800E1B50[9];
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800E1C70[24];
|
||||
//extern u32 D_800E1C70[24];
|
||||
|
||||
extern s8 D_800E1CD0[32];
|
||||
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
/* The comment below is needed for this file to be picked up by generate_ld */
|
||||
/* RAM_POS: 0x8007F640 */
|
||||
|
||||
#include "screen_asset.h"
|
||||
|
||||
// Render settings for the screens
|
||||
Gfx gRdpSetModeScreenAsset[] = {
|
||||
gsDPSetCombineMode(DKR_CC_UNK10, DKR_CC_UNK10),
|
||||
gsDPSetOtherMode(DKR_OMH_COPY_POINT_NOPERSP, DKR_OML_COMMON | G_RM_NOOP | G_RM_NOOP2),
|
||||
};
|
||||
|
||||
/**
|
||||
* Loads a 320x240 RGBA16 image to be displayed on the screen.
|
||||
* Returns the address of the screen asset, or 0x80100000 if no screen assets were found.
|
||||
* Unused.
|
||||
*/
|
||||
u8 *load_screen(s32 screenIndex) {
|
||||
u8 *someAddr;
|
||||
s32 screenTableCount, start, size;
|
||||
s32 *screenTable;
|
||||
|
||||
|
||||
screenTable = (u8 *)load_asset_section_from_rom(ASSET_SCREENS_TABLE);
|
||||
screenTableCount = 0;
|
||||
|
||||
while(screenTable[screenTableCount] != -1) {
|
||||
screenTableCount++;
|
||||
}
|
||||
|
||||
screenTableCount--;
|
||||
|
||||
// screenTableCount will always be 0 in vanilla DKR,
|
||||
// since there are no screen assets in the ROM.
|
||||
if (screenTableCount == 0) {
|
||||
free_from_memory_pool(screenTable);
|
||||
return 0x80100000;
|
||||
} else {
|
||||
if (screenIndex < 0 || screenIndex >= screenTableCount) {
|
||||
func_800C9D54("SCREEN: No out of range!!\n");
|
||||
screenIndex = 0;
|
||||
}
|
||||
|
||||
start = screenTable[screenIndex];
|
||||
size = screenTable[screenIndex + 1] - start;
|
||||
someAddr = allocate_from_main_pool_safe(size, COLOR_TAG_BLUE);
|
||||
|
||||
load_asset_to_address(ASSET_SCREENS, someAddr, start, size);
|
||||
free_from_memory_pool(screenTable);
|
||||
|
||||
return someAddr;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders a 320x240 RGBA16 screen asset.
|
||||
* Unused.
|
||||
*/
|
||||
void render_screen(Gfx **dlist, u8 *screenAddress) {
|
||||
s32 y_pos;
|
||||
|
||||
gDkrDmaDisplayList((*dlist)++, (u32)&gRdpSetModeScreenAsset + 0x80000000,
|
||||
numberOfGfxCommands(gRdpSetModeScreenAsset))
|
||||
|
||||
// Screen header is 16 bytes.
|
||||
screenAddress += 16;
|
||||
|
||||
// Draw each 320x6 RGBA16 slice until the screen image is fully drawn.
|
||||
y_pos = 0;
|
||||
while(y_pos != SCREEN_HEIGHT) {
|
||||
// Load the texture.
|
||||
gDPLoadTextureBlockS((*dlist)++, screenAddress + 0x80000000, G_IM_FMT_RGBA, G_IM_SIZ_16b,
|
||||
SCREEN_WIDTH, SCREEN_HEIGHT_PART, 0, G_TX_CLAMP, G_TX_CLAMP, 0, 0, 0, 0)
|
||||
|
||||
// Draw the texture.
|
||||
gSPTextureRectangle((*dlist)++, 0, ((y_pos) << 2), SCREEN_WIDTH << 2,
|
||||
((y_pos + SCREEN_HEIGHT_PART) << 2), 0, 0, 0, 1 << 12, 1 << 10)
|
||||
|
||||
// Advance to the next slice.
|
||||
screenAddress += SCREEN_WIDTH * SCREEN_HEIGHT_PART * 2;
|
||||
y_pos += SCREEN_HEIGHT_PART;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
#ifndef _SCREEN_ASSET_H_
|
||||
#define _SCREEN_ASSET_H_
|
||||
|
||||
#include "memory.h"
|
||||
#include "types.h"
|
||||
#include "macros.h"
|
||||
#include "f3ddkr.h"
|
||||
#include "asset_sections.h"
|
||||
|
||||
#define SCREEN_WIDTH 320
|
||||
#define SCREEN_HEIGHT 240
|
||||
#define SCREEN_HEIGHT_PART 6
|
||||
|
||||
#endif
|
||||
@@ -21,30 +21,4 @@ extern s32 D_800DE4D4;
|
||||
extern s32 D_800DE4D8;
|
||||
extern s32 D_800DE4DC;
|
||||
|
||||
/*
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800DE4E0[];
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800DE520[];
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800DE598[];
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800DE5E0[];
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800DE628[];
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800DE670[];
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800DE6A8[];
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800DE6E8[];
|
||||
*/
|
||||
|
||||
#endif
|
||||
|
||||
@@ -7,48 +7,4 @@
|
||||
extern u32 D_800DE7C0;
|
||||
extern s32 D_800DE7C4;
|
||||
|
||||
/*
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern Gfx D_800DE7C8[][2];
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800DE848[];
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800DE868[];
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800DE8E8[];
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800DECE8[];
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800DEDE8[];
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800DEEE8[];
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800DEF28[];
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800DF028[];
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800DF0A8[];
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800DF1A8[];
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800DF3A8[];
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800DF3D8[];
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
extern u32 D_800DF410[];
|
||||
*/
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,87 +0,0 @@
|
||||
/* The comment below is needed for this file to be picked up by generate_ld */
|
||||
/* RAM_POS: 0x8007F640 */
|
||||
|
||||
#include "unknown_080240.h"
|
||||
#include "memory.h"
|
||||
|
||||
#include "types.h"
|
||||
#include "macros.h"
|
||||
#include "fast3d.h"
|
||||
#include "asset_sections.h"
|
||||
|
||||
/************ .data ************/
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
Gfx D_800DF440[] = {
|
||||
0xFC137E26, 0xFFFFF3F9,
|
||||
0xEF200CCF, 0x00000000
|
||||
};
|
||||
|
||||
/*******************************/
|
||||
|
||||
// Unused?
|
||||
u32 func_8007F640(s32 arg0) {
|
||||
u32 someAddr;
|
||||
s32 count, start, size;
|
||||
s32 *lut;
|
||||
|
||||
lut = (s32 *)load_asset_section_from_rom(ASSET_EMPTY_10_TABLE);
|
||||
|
||||
count = 0;
|
||||
|
||||
while(lut[count] != -1) {
|
||||
count++;
|
||||
}
|
||||
|
||||
count--;
|
||||
|
||||
if (count == 0) {
|
||||
free_from_memory_pool(lut);
|
||||
return 0x80100000;
|
||||
} else {
|
||||
if (arg0 < 0 || arg0 >= count) {
|
||||
func_800C9D54("SCREEN: No out of range!!\n");
|
||||
arg0 = 0;
|
||||
}
|
||||
|
||||
start = lut[arg0];
|
||||
size = lut[arg0 + 1] - start;
|
||||
someAddr = allocate_from_main_pool_safe(size, COLOR_TAG_BLUE);
|
||||
|
||||
load_asset_to_address(ASSET_EMPTY_10, someAddr, start, size);
|
||||
free_from_memory_pool(lut);
|
||||
|
||||
return someAddr;
|
||||
}
|
||||
}
|
||||
|
||||
void func_8007F714(Gfx **dlist, s32 arg1) {
|
||||
s32 y_pos;
|
||||
|
||||
// In F3DDKR, command 0x07 is the display list call.
|
||||
fast3d_cmd((*dlist)++, 0x07020010, (u32)&D_800DF440 + 0x80000000)
|
||||
|
||||
arg1 += 0x10;
|
||||
y_pos = 0;
|
||||
|
||||
while(y_pos != 240) {
|
||||
|
||||
// These 7 commands are a gDPLoadTextureBlock()
|
||||
fast3d_cmd((*dlist)++, 0xFD100000, arg1 + 0x80000000)
|
||||
fast3d_cmd((*dlist)++, 0xF5100000, 0x07080200)
|
||||
fast3d_cmd((*dlist)++, 0xE6000000, 0x00000000)
|
||||
fast3d_cmd((*dlist)++, 0xF3000000, 0x0777F000)
|
||||
fast3d_cmd((*dlist)++, 0xE7000000, 0x00000000)
|
||||
fast3d_cmd((*dlist)++, 0xF510A000, 0x00080200)
|
||||
fast3d_cmd((*dlist)++, 0xF2000000, 0x004FC014)
|
||||
|
||||
// These 3 are a gSPTextureRectangle()
|
||||
fast3d_cmd((*dlist)++, 0xE4500000 | (((y_pos + 6) << 2) & 0xFFF), (y_pos << 2) & 0xFFF)
|
||||
fast3d_cmd((*dlist)++, 0xB3000000, 0x00000000)
|
||||
fast3d_cmd((*dlist)++, 0xB2000000, 0x10000400)
|
||||
|
||||
arg1 += 0xF00;
|
||||
y_pos += 6;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
#ifndef _UNKNOWN_080240_H_
|
||||
#define _UNKNOWN_080240_H_
|
||||
|
||||
#include "fast3d.h"
|
||||
|
||||
// Fast3D (F3DDKR) display list
|
||||
Gfx D_800DF440[];
|
||||
|
||||
#endif
|
||||
@@ -118,6 +118,10 @@ void ExtractConfig::extract(ROM& rom, json::JSON& assetsJson) {
|
||||
json::JSON section = codeSections[i];
|
||||
json::JSON files = section["files"];
|
||||
std::string folder = this->outDirectory + "/" + section["folder"].ToString();
|
||||
if(!fs::is_directory(folder)) {
|
||||
fs::create_directories(folder);
|
||||
}
|
||||
|
||||
std::string type = section["type"].ToString();
|
||||
|
||||
int numFiles = files.length();
|
||||
@@ -166,6 +170,10 @@ void ExtractConfig::extract(ROM& rom, json::JSON& assetsJson) {
|
||||
std::string folder = this->outDirectory + "/" + section["folder"].ToString();
|
||||
std::string type = section["type"].ToString();
|
||||
|
||||
if(!fs::is_directory(folder)) {
|
||||
fs::create_directories(folder);
|
||||
}
|
||||
|
||||
json::JSON outputAsset = json::Object();
|
||||
outputAsset["type"] = type;
|
||||
|
||||
@@ -230,10 +238,6 @@ void ExtractConfig::extract(ROM& rom, json::JSON& assetsJson) {
|
||||
std::string filename = extractions[i].filename;
|
||||
std::vector<uint8_t> data = extractions[i].data;
|
||||
pool.enqueue([&rom, type, folder, filename, data] {
|
||||
if(!fs::is_directory(folder)) {
|
||||
fs::create_directories(folder);
|
||||
}
|
||||
|
||||
std::string outFilepath = folder + "/" + filename;
|
||||
|
||||
if(is_binary_type(type)) {
|
||||
|
||||
Reference in New Issue
Block a user