Implement & link initial_menu

This commit is contained in:
Cuyler36
2023-05-23 18:49:30 -04:00
parent 2f7b56bdef
commit b709ef9fbc
26 changed files with 1276 additions and 108 deletions
+3 -1
View File
@@ -328,7 +328,9 @@ COMMON_DEFINES = [
"-d DEBUG=0"
]
DOL_DEFINES = COMMON_DEFINES + []
REL_DEFINES = COMMON_DEFINES + []
REL_DEFINES = COMMON_DEFINES + [
"-d OPTIMIZED_SQRTF"
]
BASE_DOL_CFLAGS = CFLAGS + [
"-inline on",
"-sdata 8",
+144 -87
View File
@@ -1,90 +1,147 @@
config/dol.yml:
__Creator__:
addrs: [0x800b05e8, 0x800b05f4]
__DateTime__:
addrs: [0x800b05f4, 0x800b0608]
# dvderr.c
dvd_keikoku_moji1_1_tex:
addrs: [0x800b0a60, 0x800b0f60]
dvd_keikoku_moji1_2_tex:
addrs: [0x800b0f60, 0x800b1460]
dvd_keikoku_moji1_3_tex:
addrs: [0x800b1460, 0x800b1660]
dvd_keikoku_moji1_4_tex:
addrs: [0x800b1660, 0x800b1c60]
ctl_att_w1_tex:
addrs: [0x800b1c60, 0x800b2060]
ctl_att_w2_tex:
addrs: [0x800b2060, 0x800b2460]
ctl_att_w3_tex:
addrs: [0x800b2460, 0x800b2860]
ctl_att_w4_tex:
addrs: [0x800b2860, 0x800b2c60]
ctl_att_w5_tex:
addrs: [0x800b2c60, 0x800b3060]
ctl_att_w6_tex:
addrs: [0x800b3060, 0x800b30e0]
dvd_keikoku1_v:
addrs: [0x800b30e0, 0x800b34a0]
type: "vtx"
dvd_keikoku_moji2_tex:
addrs: [0x800b3640, 0x800b38c0]
dvd_keikoku_moji2_2_tex:
addrs: [0x800b38c0, 0x800b3ec0]
dvd_keikoku_moji2_3_tex:
addrs: [0x800b3ec0, 0x800b3f40]
dvd_keikoku2_v:
addrs: [0x800b3f40, 0x800b42c0]
type: "vtx"
dvd_keikoku_moji4_tex:
addrs: [0x800b4440, 0x800b46c0]
dvd_keikoku_moji3_1_tex:
addrs: [0x800b46c0, 0x800b4cc0]
dvd_keikoku_moji3_2_tex:
addrs: [0x800b4cc0, 0x800b4f40]
dvd_keikoku_moji3_3_tex:
addrs: [0x800b4f40, 0x800b4fc0]
dvd_keikoku3_v:
addrs: [0x800b4fc0, 0x800b5400]
type: "vtx"
dvd_keikoku_moji5_tex:
addrs: [0x800b55a0, 0x800b58a0]
dvd_keikoku_moji6_2_tex:
addrs: [0x800b58a0, 0x800b5d20]
dvd_keikoku_moji6_3_tex:
addrs: [0x800b5d20, 0x800b5fa0]
dvd_keikoku_moji6_tex:
addrs: [0x800b5fa0, 0x800b63a0]
dvd_keikoku_moji6_1_tex:
addrs: [0x800b63a0, 0x800b6920]
dvd_keikoku_moji6_new1_tex:
addrs: [0x800b6920, 0x800b6b20]
dvd_keikoku_moji6_new2_tex:
addrs: [0x800b6b20, 0x800b6d20]
dvd_keikoku4_v:
addrs: [0x800b6d20, 0x800b71a0]
type: "vtx"
dvd_keikoku_moji7_tex:
addrs: [0x800b7380, 0x800b7880]
dvd_keikoku_moji8_tex:
addrs: [0x800b7880, 0x800b7c80]
dvd_keikoku_moji10_tex:
addrs: [0x800b7c80, 0x800b7e80]
dvd_keikoku_moji11_tex:
addrs: [0x800b7e80, 0x800b8300]
dvd_keikoku_moji12_tex:
addrs: [0x800b8300, 0x800b8580]
dvd_keikoku_moji9_tex:
addrs: [0x800b8580, 0x800b8a80]
dvd_keikoku5_v:
addrs: [0x800b8a80, 0x800b8ec0]
type: "vtx"
__Creator__:
addrs: [0x800b05e8, 0x800b05f4]
__DateTime__:
addrs: [0x800b05f4, 0x800b0608]
# dvderr.c
dvd_keikoku_moji1_1_tex:
addrs: [0x800b0a60, 0x800b0f60]
dvd_keikoku_moji1_2_tex:
addrs: [0x800b0f60, 0x800b1460]
dvd_keikoku_moji1_3_tex:
addrs: [0x800b1460, 0x800b1660]
dvd_keikoku_moji1_4_tex:
addrs: [0x800b1660, 0x800b1c60]
ctl_att_w1_tex:
addrs: [0x800b1c60, 0x800b2060]
ctl_att_w2_tex:
addrs: [0x800b2060, 0x800b2460]
ctl_att_w3_tex:
addrs: [0x800b2460, 0x800b2860]
ctl_att_w4_tex:
addrs: [0x800b2860, 0x800b2c60]
ctl_att_w5_tex:
addrs: [0x800b2c60, 0x800b3060]
ctl_att_w6_tex:
addrs: [0x800b3060, 0x800b30e0]
dvd_keikoku1_v:
addrs: [0x800b30e0, 0x800b34a0]
type: vtx
dvd_keikoku_moji2_tex:
addrs: [0x800b3640, 0x800b38c0]
dvd_keikoku_moji2_2_tex:
addrs: [0x800b38c0, 0x800b3ec0]
dvd_keikoku_moji2_3_tex:
addrs: [0x800b3ec0, 0x800b3f40]
dvd_keikoku2_v:
addrs: [0x800b3f40, 0x800b42c0]
type: vtx
dvd_keikoku_moji4_tex:
addrs: [0x800b4440, 0x800b46c0]
dvd_keikoku_moji3_1_tex:
addrs: [0x800b46c0, 0x800b4cc0]
dvd_keikoku_moji3_2_tex:
addrs: [0x800b4cc0, 0x800b4f40]
dvd_keikoku_moji3_3_tex:
addrs: [0x800b4f40, 0x800b4fc0]
dvd_keikoku3_v:
addrs: [0x800b4fc0, 0x800b5400]
type: vtx
dvd_keikoku_moji5_tex:
addrs: [0x800b55a0, 0x800b58a0]
dvd_keikoku_moji6_2_tex:
addrs: [0x800b58a0, 0x800b5d20]
dvd_keikoku_moji6_3_tex:
addrs: [0x800b5d20, 0x800b5fa0]
dvd_keikoku_moji6_tex:
addrs: [0x800b5fa0, 0x800b63a0]
dvd_keikoku_moji6_1_tex:
addrs: [0x800b63a0, 0x800b6920]
dvd_keikoku_moji6_new1_tex:
addrs: [0x800b6920, 0x800b6b20]
dvd_keikoku_moji6_new2_tex:
addrs: [0x800b6b20, 0x800b6d20]
dvd_keikoku4_v:
addrs: [0x800b6d20, 0x800b71a0]
type: vtx
dvd_keikoku_moji7_tex:
addrs: [0x800b7380, 0x800b7880]
dvd_keikoku_moji8_tex:
addrs: [0x800b7880, 0x800b7c80]
dvd_keikoku_moji10_tex:
addrs: [0x800b7c80, 0x800b7e80]
dvd_keikoku_moji11_tex:
addrs: [0x800b7e80, 0x800b8300]
dvd_keikoku_moji12_tex:
addrs: [0x800b8300, 0x800b8580]
dvd_keikoku_moji9_tex:
addrs: [0x800b8580, 0x800b8a80]
dvd_keikoku5_v:
addrs: [0x800b8a80, 0x800b8ec0]
type: vtx
nintendo_hi_0:
addrs: [0x800c3140, 0x800cca40]
# initial_menu.c
bootdata/gam_win_moji1_tex:
addrs: [0x800b9140, 0x800b93c0]
bootdata/gam_win_moji2_tex:
addrs: [0x800b93c0, 0x800b98c0]
bootdata/yes:
addrs: [0x800b98c0, 0x800b99c0]
bootdata/no:
addrs: [0x800b99c0, 0x800b9a40]
bootdata/att_win_waku1_tex:
addrs: [0x800b9a40, 0x800b9e40]
bootdata/att_win_waku2_tex:
addrs: [0x800b9e40, 0x800ba240]
bootdata/att_win_waku3_tex:
addrs: [0x800ba240, 0x800ba640]
bootdata/att_win_waku4_tex:
addrs: [0x800ba640, 0x800baa40]
bootdata/att_win_waku5_tex:
addrs: [0x800baa40, 0x800bae40]
bootdata/att_win_waku6_tex:
addrs: [0x800bae40, 0x800baec0]
bootdata/gam_win1_v:
addrs: [0x800baec0, 0x800bb2b0]
type: vtx
bootdata/gam_win_moji3_tex:
addrs: [0x800bb500, 0x800bba00]
bootdata/gam_win_moji4_tex:
addrs: [0x800bba00, 0x800bbf00]
bootdata/att_win_waku1_tex_1:
addrs: [0x800bbf00, 0x800bc300]
bootdata/att_win_waku2_tex_1:
addrs: [0x800bc300, 0x800bc700]
bootdata/att_win_waku3_tex_1:
addrs: [0x800bc700, 0x800bcb00]
bootdata/att_win_waku4_tex_1:
addrs: [0x800bcb00, 0x800bcf00]
bootdata/att_win_waku5_tex_1:
addrs: [0x800bcf00, 0x800bd300]
bootdata/att_win_waku6_tex_1:
addrs: [0x800bd300, 0x800bd380]
bootdata/gam_win2_v:
addrs: [0x800bd380, 0x800bd6c0]
type: vtx
bootdata/gam_win_moji3_tex_1:
addrs: [0x800bd820, 0x800bdd20]
bootdata/gam_win_moji5_tex:
addrs: [0x800bdd20, 0x800be0a0]
bootdata/gam_win3_v:
addrs: [0x800be0a0, 0x800be3e0]
type: vtx
bootdata/nintendo_376x104:
addrs: [0x800be460, 0x800c30c0]
bootdata/logo_nin_v:
addrs: [0x800c30c0, 0x800c3100]
type: vtx
nintendo_hi_0:
addrs: [0x800c3140, 0x800cca40]
config/rel.yml:
wipe1_v:
addrs: [0x80652AD0, 0x80652C60]
type: "vtx"
g_wipe1_txt:
addrs: [0x80652C60, 0x80653460]
wipe1_v:
addrs: [0x80652AD0, 0x80652C60]
type: vtx
g_wipe1_txt:
addrs: [0x80652C60, 0x80653460]
+15
View File
@@ -16,11 +16,26 @@ boot.c:
.bss: [0x800e2280, 0x800e2318]
version.c:
.data: [0x800b05e8, 0x800b0608]
initial_menu.c:
.text: [0x80007188, 0x80007e58]
.rodata: [0x800a97e8, 0x800a97f8]
.data: [0x800b0608, 0x800b0a60]
.bss: [0x800e2640, 0x800e2790]
dvderr.c:
.text: [0x80007e58, 0x800083f8]
.rodata: [0x800a97f8, 0x800a9838]
.data: [0x800b0a60, 0x800b9140]
.bss: [0x800e2790, 0x800e2b88]
bootdata/gam_win1.c:
.data: [0x800b9140, 0x800bb500]
bootdata/gam_win2.c:
.data: [0x800bb500, 0x800bd820]
bootdata/gam_win3.c:
.data: [0x800bd820, 0x800be460]
bootdata/logo_nin.c:
.data: [0x800be460, 0x800c3140]
nintendo_hi_0.c:
.data: [0x800c3140, 0x800cca40]
jaudio_NES/dummyprobe.c:
.text: [0x800083f8, 0x80008400]
#jaudio_NES/verysimple.c:
+3 -3
View File
@@ -2,9 +2,9 @@ sys_vimgr.c:
.text: [0x803703F8, 0x80370418]
m_cockroach.c:
.text: [0x80385430, 0x80385A80]
#m_controller.c: # TODO: uncomment when fsqrt's $localstatic$ issue is resolved
# .text: [0x80395BE8, 0x80396120]
# .rodata: [0x80641D20, 0x80641D50]
m_controller.c: # TODO: uncomment when fsqrt's $localstatic$ issue is resolved
.text: [0x80395BE8, 0x80396120]
.rodata: [0x80641D20, 0x80641D50]
m_debug_hayakawa.c:
.text: [0x803965E4, 0x803973E8]
.rodata: [0x80641D50, 0x80641D90]
-2
View File
@@ -11,7 +11,6 @@ global:
0x800034e0: TRK_memset
0x80003510: TRK_memcpy
0x80003534: gTRKInterruptVectorTable
0x80003534: gTRKInterruptVectorTable
0x80005468: __TRK_reset
0x800056c0: soundArenaAlloc
0x800056c8: search_partial_address
@@ -30,7 +29,6 @@ global:
0x80005dc0: fault_callback_scroll
0x80006004: adjustOSArena
0x800060f8: main
0x800060f8: main
0x8000663c: ReportDiskID__Fv
0x8000665c: JW_UpdateVideoMode
0x800067b4: JW_SetProgressiveMode
+1 -1
View File
@@ -631,7 +631,7 @@ class CSource(Source):
self.cflags = c.JSYSTEM_CFLAGS
self.cc = c.CC
self.frank = False
elif path == "src/boot.c":
elif path.startswith("src/bootdata/") or path == "src/boot.c" or path == "src/initial_menu.c":
self.cflags = c.DOL_BOOT_CFLAGS
self.cc = c.CC
self.frank = False
+37
View File
@@ -0,0 +1,37 @@
#ifndef JUTENUM_H
#define JUTENUM_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
enum EButtons {
MAINSTICK_UP = 0x8000000,
MAINSTICK_DOWN = 0x4000000,
MAINSTICK_RIGHT = 0x2000000,
MAINSTICK_LEFT = 0x1000000,
CSTICK_UP = 0x80000,
CSTICK_DOWN = 0x40000,
CSTICK_RIGHT = 0x20000,
CSTICK_LEFT = 0x10000,
START = 0x1000,
Y = 0x800,
X = 0x400,
B = 0x200,
A = 0x100,
L = 0x40,
R = 0x20,
Z = 0x10,
DPAD_UP = 0x8,
DPAD_DOWN = 0x4,
DPAD_RIGHT = 0x2,
DPAD_LEFT = 0x1
};
#ifdef __cplusplus
}
#endif
#endif
+19 -1
View File
@@ -2,7 +2,9 @@
#define W_MATH_H
#include "types.h"
inline float sqrtf(float x)
/* this is needed to keep $localstatic$ variables out of the rel */
#ifndef OPTIMIZED_SQRTF
extern inline float sqrtf(float x)
{
static const double _half=.5;
static const double _three=3.0;
@@ -18,6 +20,22 @@ inline float sqrtf(float x)
}
return x;
}
#else
extern inline float sqrtf(float x)
{
volatile float y;
if(x > 0.0f)
{
double guess = __frsqrte((double)x); // returns an approximation to
guess = .5*guess*(3.0 - guess*guess*x); // now have 12 sig bits
guess = .5*guess*(3.0 - guess*guess*x); // now have 24 sig bits
guess = .5*guess*(3.0 - guess*guess*x); // now have 32 sig bits
y=(float)(x*guess);
return y;
}
return x;
}
#endif
extern inline double fabs(double x)
{
+35
View File
@@ -0,0 +1,35 @@
#ifndef BOOTDATA_H
#define BOOTDATA_H
#include "types.h"
#include "PR/mbi.h"
#ifdef __cplusplus
extern "C" {
#endif
#define LOGO_COLOR_R 220
#define LOGO_COLOR_G 0
#define LOGO_COLOR_B 0
extern Gfx gam_win1_winT_model[];
extern Gfx gam_win2_winT_model[];
extern Gfx gam_win1_cursor_model[];
extern Gfx gam_win1_moji_model[];
extern Gfx gam_win1_moji2_model[];
extern Gfx gam_win1_moji3_model[];
extern Gfx gam_win2_moji_model[];
extern Gfx gam_win3_moji_model[];
extern u8 nintendo_376x104[];
extern Vtx logo_nin_v[];
extern Gfx logo_ninT_model[];
#ifdef __cplusplus
}
#endif
#endif
+19
View File
@@ -0,0 +1,19 @@
#ifndef OSFONT_H
#define OSFONT_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
#define OS_FONT_ANSI 0u
#define OS_FONT_SJIS 1u
u16 OSGetFontEncode();
#ifdef __cplusplus
}
#endif
#endif
+16
View File
@@ -0,0 +1,16 @@
#ifndef OSRESETSW_H
#define OSRESETSW_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
BOOL OSGetResetSwitchState();
#ifdef __cplusplus
}
#endif
#endif
+1
View File
@@ -11,6 +11,7 @@ void VISetBlack(BOOL);
void VIWaitForRetrace();
void VIConfigurePan(u16 x_origin, u16 y_origin, u16 width, u16 height);
u32 VIGetRetraceCount();
u32 VIGetDTVStatus();
#ifdef __cplusplus
};
+11
View File
@@ -2,11 +2,22 @@
#define INITIAL_MENU_H
#include "types.h"
#include "PR/mbi.h"
#ifdef __cplusplus
extern "C" {
#endif
#define INITIAL_MENU_STACK_SIZE 0x2800
#define INITIAL_MENU_LIMIT_TIME (OSMicrosecondsToTicks(10000000ull))
#define INITIAL_MENU_SELECT_WAIT_TIME (OSMicrosecondsToTicks(3000000ull))
#define INITIAL_MENU_OSMESG_INIT_DONE 0x1234
#define INITIAL_MENU_OSMESG_FADEOUT_STEP 0x8888
#define INITIAL_MENU_OSMESG_LOAD_GAME_DONE 0x9999
extern void make_dl_nintendo_logo(Gfx** gpp, u32 alpha);
extern void initial_menu_init();
extern void initial_menu_cleanup();
+8
View File
@@ -20,6 +20,8 @@ extern "C" {
#define G_FIRST_CMD G_SETTEXEDGEALPHA
#define G_CC_BLENDPRIMDECALA 0, 0, 0, PRIMITIVE, 0, 0, 0, TEXEL0
/* Triangle/Quad vertex bit size */
#define POLY_5b 0 /* 5 bits per vertex index (0 - 31) */
#define POLY_7b 1 /* 7 bits per vertex index (0 - 127) */
@@ -579,6 +581,12 @@ do { \
(u32)0 \
}}
#define G_DL_GXDL 2
/* Macro for calling GC formatted display lists from N64 lists */
#define gGXCallDisplayList(pkt, dl, nbytes) gDma1p(pkt, G_DL, dl, nbytes, G_DL_GXDL)
#define gsGXCallDisplayList(dl, nbytes) gsDma1p(pkt, G_DL, dl, nbytes, G_DL_GXDL)
#ifdef __cplusplus
}
#endif
+12
View File
@@ -3,6 +3,7 @@
#include "types.h"
#include "JSystem/JKernel/JKREnum.h"
#include "JSystem/JUtility/JUTEnum.h"
#ifdef __cplusplus
extern "C" {
@@ -22,12 +23,17 @@ extern void JW_SetProgressiveMode(BOOL enable);
extern u32 JW_GetAramAddress(int resource_no);
extern u8* _JW_GetResourceAram(u32 aram_addr, u8* dst, size_t size);
extern void JW_SetFamicomMode(int enabled);
extern void JW_SetLogoMode(int mode);
extern void JW_Cleanup();
extern void* JC_JFWSystem_getSystemConsole();
extern void* JC_JFWSystem_getRootHeap();
extern void* JC_JFWSystem_getSystemHeap();
extern void* JC_JFWDisplay_getManager();
extern void JC_JFWDisplay_startFadeOut(void* manager, int len);
extern void JC_JFWDisplay_startFadeIn(void* manager, int len);
extern int JC_JKRHeap_dump(void* heap);
extern s32 JC_JKRHeap_getTotalFreeSize(void* heap);
@@ -73,6 +79,12 @@ extern void JC_JUTException_setMapFile(const char* path);
extern void JC_JUTAssertion_changeDevice(int device);
extern void JC_JUTAssertion_changeDisplayTime(int displayTime);
extern void JC_JUTGamePad_read();
extern u32 JW_JUTGamepad_getButton();
extern u32 JW_JUTGamepad_getTrigger();
extern u32 JW_JUTGamepad_getErrorStatus();
#ifdef __cplusplus
}
#endif
+7
View File
@@ -5,6 +5,10 @@
#include "dolphin/os/OSTime.h"
#include "dolphin/os/OSCache.h"
#include "libultra/gu.h"
#include "libultra/osMesg.h"
#include "libultra/shutdown.h"
#include "libultra/os_timer.h"
#include "libultra/os_thread.h"
#define N64_SCREEN_HEIGHT 240
#define N64_SCREEN_WIDTH 320
@@ -14,6 +18,8 @@
extern "C" {
#endif
typedef u64 Z_OSTime;
int bcmp (void *v1, void *v2, u32 size);
void bcopy(void *src, void *dst, size_t n);
void bzero(void *ptr, size_t size);
@@ -24,6 +30,7 @@ OSTime osGetTime(void);
extern s32 osAppNMIBuffer[];
extern int osShutdown;
extern u8 __osResetSwitchPressed;
#ifdef __cplusplus
+1 -1
View File
@@ -18,6 +18,6 @@ typedef struct OSMesgQueue {
extern void osCreateMesgQueue(OSMessageQueue* mq ,OSMessage msg, int flags);
extern int osSendMesg(OSMessageQueue* mq, OSMessage msg, int flags);
extern int osRecvMesg(OSMessageQueue* mq, OSMessage msg, int flags);
extern int osRecvMesg(OSMessageQueue* mq, OSMessage* msg, int flags);
#endif
+1
View File
@@ -10,6 +10,7 @@ extern "C" {
extern void osCreateThread2(OSThread* t, int id, void(*entry)(void*), void* arg, void* stack_pointer, size_t stack_size, OSPriority priority);
extern void osStartThread(OSThread* t);
extern void osDestroyThread(OSThread* t);
#ifdef __cplusplus
}
+1
View File
@@ -3,6 +3,7 @@
#include "m_lib.h"
#include "m_event.h"
#include "MSL_C/w_math.h"
#include "sys_math.h"
/**
* @brief Constructor for MCON.
+203
View File
@@ -0,0 +1,203 @@
#include "bootdata.h"
#include "libforest/gbi_extensions.h"
static u8 gam_win_moji1_tex[] ATTRIBUTE_ALIGN(32) = {
#include "assets/bootdata/gam_win_moji1_tex.inc"
};
static u8 gam_win_moji2_tex[] ATTRIBUTE_ALIGN(32) = {
#include "assets/bootdata/gam_win_moji2_tex.inc"
};
static u8 yes[] = {
#include "assets/bootdata/yes.inc"
};
static u8 no[] = {
#include "assets/bootdata/no.inc"
};
static u8 att_win_waku1_tex[] ATTRIBUTE_ALIGN(32) = {
#include "assets/bootdata/att_win_waku1_tex.inc"
};
static u8 att_win_waku2_tex[] ATTRIBUTE_ALIGN(32) = {
#include "assets/bootdata/att_win_waku2_tex.inc"
};
static u8 att_win_waku3_tex[] ATTRIBUTE_ALIGN(32) = {
#include "assets/bootdata/att_win_waku3_tex.inc"
};
static u8 att_win_waku4_tex[] ATTRIBUTE_ALIGN(32) = {
#include "assets/bootdata/att_win_waku4_tex.inc"
};
static u8 att_win_waku5_tex[] ATTRIBUTE_ALIGN(32) = {
#include "assets/bootdata/att_win_waku5_tex.inc"
};
static u8 att_win_waku6_tex[] ATTRIBUTE_ALIGN(32) = {
#include "assets/bootdata/att_win_waku6_tex.inc"
};
static Vtx gam_win1_v[] = {
#include "assets/bootdata/gam_win1_v.inc"
};
Gfx gam_win1_cursor_model[] = {
gsSPTexture(0, 0, 0, 0, G_ON),
gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PASS2),
gsDPSetPrimColor(0, 255, 145, 40, 40, 255),
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),
gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH),
gsSPVertex(&gam_win1_v[0], 3, 0),
gsSPNTrianglesInit_5b(
1, // tri count
0, 1, 2, // tri0
0, 0, 0, // tri1
0, 0, 0 // tri2
),
gsSPEndDisplayList(),
};
Gfx gam_win1_moji_model[] = {
gsSPTexture(0, 0, 0, 0, G_ON),
gsDPSetCombineMode(G_CC_BLENDPRIMDECALA, G_CC_PASS2),
gsDPSetPrimColor(0, 255, 50, 50, 60, 255),
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2),
gsDPLoadTextureBlock_4b_Dolphin(gam_win_moji2_tex, G_IM_FMT_I, 160, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0),
gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH),
gsSPVertex(&gam_win1_v[3], 8, 0),
gsSPNTrianglesInit_5b(
2, // tri count
0, 1, 2, // tri0
1, 3, 2, // tri1
0, 0, 0 // tri2
),
gsDPLoadTextureBlock_4b_Dolphin(gam_win_moji1_tex, G_IM_FMT_I, 80, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0),
gsSPNTrianglesInit_5b(
2, // tri count
4, 5, 6, // tri0
5, 7, 6, // tri1
0, 0, 0 // tri2
),
gsSPEndDisplayList(),
};
Gfx gam_win1_moji2_model[] = {
gsSPTexture(0, 0, 0, 0, G_ON),
gsDPSetCombineMode(G_CC_BLENDPRIMDECALA, G_CC_PASS2),
gsDPSetPrimColor(0, 255, 90, 90, 155, 255),
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2),
gsDPLoadTextureBlock_4b_Dolphin(yes, G_IM_FMT_I, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0),
gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH),
gsSPVertex(&gam_win1_v[11], 4, 0),
gsSPNTrianglesInit_5b(
2, // tri count
0, 1, 2, // tri0
1, 3, 2, // tri1
0, 0, 0 // tri2
),
gsSPEndDisplayList(),
};
Gfx gam_win1_moji3_model[] = {
gsSPTexture(0, 0, 0, 0, G_ON),
gsDPSetCombineMode(G_CC_BLENDPRIMDECALA, G_CC_PASS2),
gsDPSetPrimColor(0, 255, 90, 90, 155, 255),
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2),
gsDPLoadTextureBlock_4b_Dolphin(no, G_IM_FMT_I, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0),
gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH),
gsSPVertex(&gam_win1_v[15], 4, 0),
gsSPNTrianglesInit_5b(
2, // tri count
0, 1, 2, // tri0
1, 3, 2, // tri1
0, 0, 0 // tri2
),
gsSPEndDisplayList(),
};
Gfx gam_win1_winT_model[] = {
gsSPTexture(0, 0, 0, 0, G_ON),
gsDPSetCombineMode(G_CC_BLENDPRIMDECALA, G_CC_PASS2),
gsDPSetPrimColor(0, 255, 225, 255, 255, 255),
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2),
gsDPLoadTextureBlock_4b_Dolphin(att_win_waku6_tex, G_IM_FMT_I, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0),
gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH),
gsSPVertex(&gam_win1_v[19], 28, 0),
gsSPNTrianglesInit_5b(
2, // tri count
0, 1, 2, // tri0
1, 3, 2, // tri1
0, 0, 0 // tri2
),
gsDPLoadTextureBlock_4b_Dolphin(att_win_waku5_tex, G_IM_FMT_I, 64, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0),
gsSPNTrianglesInit_5b(
4, // tri count
4, 5, 6, // tri0
7, 4, 6, // tri1
8, 9, 10 // tri2
),
gsSPNTriangles_5b(
9, 11, 10, // tri0
0, 0, 0, // tri1
0, 0, 0, // tri2
0, 0, 0 // tri3
),
gsDPLoadTextureBlock_4b_Dolphin(att_win_waku4_tex, G_IM_FMT_I, 64, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0),
gsSPNTrianglesInit_5b(
4, // tri count
12, 13, 14, // tri0
15, 12, 14, // tri1
16, 17, 18 // tri2
),
gsSPNTriangles_5b(
17, 19, 18, // tri0
0, 0, 0, // tri1
0, 0, 0, // tri2
0, 0, 0 // tri3
),
gsDPLoadTextureBlock_4b_Dolphin(att_win_waku3_tex, G_IM_FMT_I, 32, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0),
gsSPNTrianglesInit_5b(
4, // tri count
20, 21, 22, // tri0
23, 20, 22, // tri1
24, 25, 26 // tri2
),
gsSPNTriangles_5b(
25, 27, 26, // tri0
0, 0, 0, // tri1
0, 0, 0, // tri2
0, 0, 0 // tri3
),
gsDPLoadTextureBlock_4b_Dolphin(att_win_waku2_tex, G_IM_FMT_I, 64, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0),
gsSPVertex(&gam_win1_v[47], 16, 0),
gsSPNTrianglesInit_5b(
4, // tri count
0, 1, 2, // tri0
1, 3, 2, // tri1
4, 5, 6 // tri2
),
gsSPNTriangles_5b(
7, 4, 6, // tri0
0, 0, 0, // tri1
0, 0, 0, // tri2
0, 0, 0 // tri3
),
gsDPLoadTextureBlock_4b_Dolphin(att_win_waku1_tex, G_IM_FMT_I, 64, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0),
gsSPNTrianglesInit_5b(
4, // tri count
8, 9, 10, // tri0
11, 8, 10, // tri1
12, 13, 14 // tri2
),
gsSPNTriangles_5b(
13, 15, 14, // tri0
0, 0, 0, // tri1
0, 0, 0, // tri2
0, 0, 0 // tri3
),
gsSPEndDisplayList(),
};
+145
View File
@@ -0,0 +1,145 @@
#include "bootdata.h"
#include "libforest/gbi_extensions.h"
static u8 gam_win_moji3_tex[] ATTRIBUTE_ALIGN(32) = {
#include "assets/bootdata/gam_win_moji3_tex.inc"
};
static u8 gam_win_moji4_tex[] ATTRIBUTE_ALIGN(32) = {
#include "assets/bootdata/gam_win_moji4_tex.inc"
};
static u8 att_win_waku1_tex[] ATTRIBUTE_ALIGN(32) = {
#include "assets/bootdata/att_win_waku1_tex_1.inc"
};
static u8 att_win_waku2_tex[] ATTRIBUTE_ALIGN(32) = {
#include "assets/bootdata/att_win_waku2_tex_1.inc"
};
static u8 att_win_waku3_tex[] ATTRIBUTE_ALIGN(32) = {
#include "assets/bootdata/att_win_waku3_tex_1.inc"
};
static u8 att_win_waku4_tex[] ATTRIBUTE_ALIGN(32) = {
#include "assets/bootdata/att_win_waku4_tex_1.inc"
};
static u8 att_win_waku5_tex[] ATTRIBUTE_ALIGN(32) = {
#include "assets/bootdata/att_win_waku5_tex_1.inc"
};
static u8 att_win_waku6_tex[] ATTRIBUTE_ALIGN(32) = {
#include "assets/bootdata/att_win_waku6_tex_1.inc"
};
static Vtx gam_win2_v[] = {
#include "assets/bootdata/gam_win2_v.inc"
};
Gfx gam_win2_moji_model[] = {
gsSPTexture(0, 0, 0, 0, G_ON),
gsDPSetCombineMode(G_CC_BLENDPRIMDECALA, G_CC_PASS2),
gsDPSetPrimColor(0, 255, 50, 50, 60, 255),
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2),
gsDPLoadTextureBlock_4b_Dolphin(gam_win_moji4_tex, G_IM_FMT_I, 160, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0),
gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH),
gsSPVertex(&gam_win2_v[0], 8, 0),
gsSPNTrianglesInit_5b(
2, // tri count
0, 1, 2, // tri0
1, 3, 2, // tri1
0, 0, 0 // tri2
),
gsDPLoadTextureBlock_4b_Dolphin(gam_win_moji3_tex, G_IM_FMT_I, 160, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0),
gsSPNTrianglesInit_5b(
2, // tri count
4, 5, 6, // tri0
5, 7, 6, // tri1
0, 0, 0 // tri2
),
gsSPEndDisplayList(),
};
Gfx gam_win2_winT_model[] = {
gsSPTexture(0, 0, 0, 0, G_ON),
gsDPSetCombineMode(G_CC_BLENDPRIMDECALA, G_CC_PASS2),
gsDPSetPrimColor(0, 255, 225, 255, 255, 255),
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2),
gsDPLoadTextureBlock_4b_Dolphin(att_win_waku6_tex, G_IM_FMT_I, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0),
gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH),
gsSPVertex(&gam_win2_v[8], 28, 0),
gsSPNTrianglesInit_5b(
2, // tri count
0, 1, 2, // tri0
1, 3, 2, // tri1
0, 0, 0 // tri2
),
gsDPLoadTextureBlock_4b_Dolphin(att_win_waku5_tex, G_IM_FMT_I, 64, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0),
gsSPNTrianglesInit_5b(
4, // tri count
4, 5, 6, // tri0
7, 4, 6, // tri1
8, 9, 10 // tri2
),
gsSPNTriangles_5b(
9, 11, 10, // tri0
0, 0, 0, // tri1
0, 0, 0, // tri2
0, 0, 0 // tri3
),
gsDPLoadTextureBlock_4b_Dolphin(att_win_waku4_tex, G_IM_FMT_I, 64, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0),
gsSPNTrianglesInit_5b(
4, // tri count
12, 13, 14, // tri0
15, 12, 14, // tri1
16, 17, 18 // tri2
),
gsSPNTriangles_5b(
17, 19, 18, // tri0
0, 0, 0, // tri1
0, 0, 0, // tri2
0, 0, 0 // tri3
),
gsDPLoadTextureBlock_4b_Dolphin(att_win_waku3_tex, G_IM_FMT_I, 32, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0),
gsSPNTrianglesInit_5b(
4, // tri count
20, 21, 22, // tri0
23, 20, 22, // tri1
24, 25, 26 // tri2
),
gsSPNTriangles_5b(
25, 27, 26, // tri0
0, 0, 0, // tri1
0, 0, 0, // tri2
0, 0, 0 // tri3
),
gsDPLoadTextureBlock_4b_Dolphin(att_win_waku2_tex, G_IM_FMT_I, 64, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0),
gsSPVertex(&gam_win2_v[36], 16, 0),
gsSPNTrianglesInit_5b(
4, // tri count
0, 1, 2, // tri0
1, 3, 2, // tri1
4, 5, 6 // tri2
),
gsSPNTriangles_5b(
7, 4, 6, // tri0
0, 0, 0, // tri1
0, 0, 0, // tri2
0, 0, 0 // tri3
),
gsDPLoadTextureBlock_4b_Dolphin(att_win_waku1_tex, G_IM_FMT_I, 64, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0),
gsSPNTrianglesInit_5b(
4, // tri count
8, 9, 10, // tri0
11, 8, 10, // tri1
12, 13, 14 // tri2
),
gsSPNTriangles_5b(
13, 15, 14, // tri0
0, 0, 0, // tri1
0, 0, 0, // tri2
0, 0, 0 // tri3
),
gsSPEndDisplayList(),
};
+38
View File
@@ -0,0 +1,38 @@
#include "bootdata.h"
#include "libforest/gbi_extensions.h"
static u8 gam_win_moji3_tex[] ATTRIBUTE_ALIGN(32) = {
#include "assets/bootdata/gam_win_moji3_tex_1.inc"
};
static u8 gam_win_moji5_tex[] ATTRIBUTE_ALIGN(32) = {
#include "assets/bootdata/gam_win_moji5_tex.inc"
};
static Vtx gam_win3_v[] = {
#include "assets/bootdata/gam_win3_v.inc"
};
Gfx gam_win3_moji_model[] = {
gsSPTexture(0, 0, 0, 0, G_ON),
gsDPSetCombineMode(G_CC_BLENDPRIMDECALA, G_CC_PASS2),
gsDPSetPrimColor(0, 255, 50, 50, 60, 255),
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2),
gsDPLoadTextureBlock_4b_Dolphin(gam_win_moji5_tex, G_IM_FMT_I, 112, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0),
gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH),
gsSPVertex(&gam_win3_v[0], 8, 0),
gsSPNTrianglesInit_5b(
2, // tri count
0, 1, 2, // tri0
1, 3, 2, // tri1
0, 0, 0 // tri2
),
gsDPLoadTextureBlock_4b_Dolphin(gam_win_moji3_tex, G_IM_FMT_I, 160, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0),
gsSPNTrianglesInit_5b(
2, // tri count
4, 5, 6, // tri0
5, 7, 6, // tri1
0, 0, 0 // tri2
),
gsSPEndDisplayList(),
};
+22
View File
@@ -0,0 +1,22 @@
#include "bootdata.h"
#include "libforest/gbi_extensions.h"
u8 nintendo_376x104[] ATTRIBUTE_ALIGN(32) = {
#include "assets/bootdata/nintendo_376x104.inc"
};
Vtx logo_nin_v[] = {
#include "assets/bootdata/logo_nin_v.inc"
};
Gfx logo_ninT_model[] = {
gsDPLoadTextureBlock_4b_Dolphin(nintendo_376x104, G_IM_FMT_I, 376, 104, 15, GX_CLAMP, GX_CLAMP, 0, 0),
gsSPVertex(&logo_nin_v[0], 4, 0),
gsSPNTrianglesInit_5b(
2, // tri count
0, 1, 2, // tri0
1, 3, 2, // tri1
0, 0, 0 // tri2
),
gsSPEndDisplayList(),
};
+10 -12
View File
@@ -8,8 +8,6 @@
#include "dolphin/vi.h"
#include "dolphin/gx.h"
#define G_CC_DVDERR 0, 0, 0, PRIMITIVE, 0, 0, 0, TEXEL0
/* imports */
static u8 dvd_keikoku_moji1_1_tex[] ATTRIBUTE_ALIGN(32) = {
#include "assets/dvd_keikoku_moji1_1_tex.inc"
@@ -49,7 +47,7 @@ static Vtx dvd_keikoku1_v[] = {
static Gfx keikoku1_dvd_att_moji_model[] = {
/* init */
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_ON),
gsDPSetCombineMode(G_CC_DVDERR, G_CC_PASS2),
gsDPSetCombineMode(G_CC_BLENDPRIMDECALA, G_CC_PASS2),
gsDPSetPrimColor(0, 255, 235, 235, 255, 255),
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_INTER2),
@@ -89,7 +87,7 @@ static Gfx keikoku1_dvd_att_moji_model[] = {
static Gfx keikoku1_dvd_att_winT_model[] = {
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_ON),
gsDPSetCombineMode(G_CC_DVDERR, G_CC_PASS2),
gsDPSetCombineMode(G_CC_BLENDPRIMDECALA, G_CC_PASS2),
gsDPSetPrimColor(0, 255, 100, 0, 170, 255),
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2),
@@ -192,7 +190,7 @@ static Vtx dvd_keikoku2_v[] = {
};
static Gfx keikoku2_dvd_att_moji_model[] = {
gsSPTexture(0, 0, 0, 0, G_ON),
gsDPSetCombineMode(G_CC_DVDERR, G_CC_PASS2),
gsDPSetCombineMode(G_CC_BLENDPRIMDECALA, G_CC_PASS2),
gsDPSetPrimColor(0, 255, 235, 235, 255, 255),
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_INTER2),
gsDPLoadTextureBlock_4b_Dolphin(dvd_keikoku_moji2_3_tex, G_IM_FMT_I, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0),
@@ -223,7 +221,7 @@ static Gfx keikoku2_dvd_att_moji_model[] = {
static Gfx keikoku2_dvd_att_winT_model[] = {
gsSPTexture(0, 0, 0, 0, G_ON),
gsDPSetCombineMode(G_CC_DVDERR, G_CC_PASS2),
gsDPSetCombineMode(G_CC_BLENDPRIMDECALA, G_CC_PASS2),
gsDPSetPrimColor(0, 255, 100, 0, 170, 255),
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2),
gsDPLoadTextureBlock_4b_Dolphin(ctl_att_w6_tex, G_IM_FMT_I, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0),
@@ -322,7 +320,7 @@ static Vtx dvd_keikoku3_v[] = {
};
static Gfx keikoku3_dvd_att_moji_model[] = {
gsSPTexture(0, 0, 0, 0, G_ON),
gsDPSetCombineMode(G_CC_DVDERR, G_CC_PASS2),
gsDPSetCombineMode(G_CC_BLENDPRIMDECALA, G_CC_PASS2),
gsDPSetPrimColor(0, 255, 235, 235, 255, 255),
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_INTER2),
gsDPLoadTextureBlock_4b_Dolphin(dvd_keikoku_moji3_3_tex, G_IM_FMT_I, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0),
@@ -372,7 +370,7 @@ static Gfx keikoku3_dvd_att_moji_model[] = {
static Gfx keikoku3_dvd_att_winT_model[] = {
gsSPTexture(0, 0, 0, 0, G_ON),
gsDPSetCombineMode(G_CC_DVDERR, G_CC_PASS2),
gsDPSetCombineMode(G_CC_BLENDPRIMDECALA, G_CC_PASS2),
gsDPSetPrimColor(0, 255, 100, 0, 170, 255),
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2),
gsDPLoadTextureBlock_4b_Dolphin(ctl_att_w6_tex, G_IM_FMT_I, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0),
@@ -480,7 +478,7 @@ static Vtx dvd_keikoku4_v[] = {
};
static Gfx keikoku4_dvd_att_moji_model[] = {
gsSPTexture(0, 0, 0, 0, G_ON),
gsDPSetCombineMode(G_CC_DVDERR, G_CC_PASS2),
gsDPSetCombineMode(G_CC_BLENDPRIMDECALA, G_CC_PASS2),
gsDPSetPrimColor(0, 255, 235, 235, 255, 255),
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_INTER2),
gsDPLoadTextureBlock_4b_Dolphin(dvd_keikoku_moji6_new2_tex, G_IM_FMT_I, 64, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0),
@@ -539,7 +537,7 @@ static Gfx keikoku4_dvd_att_moji_model[] = {
static Gfx keikoku4_dvd_att_winT_model[] = {
gsSPTexture(0, 0, 0, 0, G_ON),
gsDPSetCombineMode(G_CC_DVDERR, G_CC_PASS2),
gsDPSetCombineMode(G_CC_BLENDPRIMDECALA, G_CC_PASS2),
gsDPSetPrimColor(0, 255, 100, 0, 170, 255),
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2),
gsDPLoadTextureBlock_4b_Dolphin(ctl_att_w6_tex, G_IM_FMT_I, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0),
@@ -644,7 +642,7 @@ static Vtx dvd_keikoku5_v[] = {
};
static Gfx keikoku5_dvd_att_moji_model[] = {
gsSPTexture(0, 0, 0, 0, G_ON),
gsDPSetCombineMode(G_CC_DVDERR, G_CC_PASS2),
gsDPSetCombineMode(G_CC_BLENDPRIMDECALA, G_CC_PASS2),
gsDPSetPrimColor(0, 255, 235, 235, 255, 255),
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_INTER2),
gsDPLoadTextureBlock_4b_Dolphin(dvd_keikoku_moji9_tex, G_IM_FMT_I, 160, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0),
@@ -696,7 +694,7 @@ static Gfx keikoku5_dvd_att_moji_model[] = {
static Gfx keikoku5_dvd_att_winT_model[] = {
gsSPTexture(0, 0, 0, 0, G_ON),
gsDPSetCombineMode(G_CC_DVDERR, G_CC_PASS2),
gsDPSetCombineMode(G_CC_BLENDPRIMDECALA, G_CC_PASS2),
gsDPSetPrimColor(0, 255, 100, 0, 170, 255),
gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2),
gsDPLoadTextureBlock_4b_Dolphin(ctl_att_w6_tex, G_IM_FMT_I, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0),
+453
View File
@@ -0,0 +1,453 @@
#include "initial_menu.h"
#include "PR/mbi.h"
#include "libforest/gbi_extensions.h"
#include "m_nmibuf.h"
#include "dolphin/dvd.h"
#include "libjsys/jsyswrapper.h"
#include "boot.h"
#include "dolphin/os/OSFont.h"
#include "bootdata.h"
#include "libultra/libultra.h"
#include "libforest/emu64/emu64_wrapper.h"
#include "dolphin/vi.h"
#include "dolphin/os/OSRtc.h"
#include "dolphin/os/OSMessage.h"
#include "dolphin/os/OSResetSW.h"
#include "dolphin/os/OSReset.h"
#include "dolphin/os.h"
#include "m_controller.h"
#include "dvderr.h"
#define G_CC_LOGO 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0
static Mtx model_cursor;
static u8 progressive_mode;
static Gfx gam_win1_cursor_setup[] = {
gsSPTexture(0, 0, 0, 0, G_OFF),
gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PRIMITIVE),
gsDPSetRenderMode(G_RM_AA_OPA_SURF, G_RM_AA_OPA_SURF2),
gsSPLoadGeometryMode(G_SHADE | G_SHADING_SMOOTH),
gsSPEndDisplayList(),
};
static Gfx gam_win1_moji_setup[] = {
gsSPTexture(0, 0, 0, 0, G_ON),
gsDPSetCombineMode(G_CC_BLENDPRIMDECALA, G_CC_BLENDPRIMDECALA),
gsDPSetRenderMode(G_RM_XLU_SURF, G_RM_XLU_SURF2),
gsSPLoadGeometryMode(G_SHADE | G_SHADING_SMOOTH),
gsSPEndDisplayList(),
};
static Vp viewport = {
1280, 960, 511, 0,
1280, 960, 511, 0
};
static Mtx projection = {
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0xFFFF0000, 0x00000000, 0xFFFF0001,
0x00CC0000, 0x00000000, 0x00000111, 0x00000000,
0x00000000, 0xFFFF0000, 0x00000000, 0x00000000
};
static Mtx lookat = {
0x10000, 0x00000, 0x00001, 0x00000,
0x00000, 0x10000, 0x00000, 0x00001,
0x00000, 0x00000, 0x00000, 0x00000,
0x00000, 0x00000, 0x00000, 0x00000
};
static Mtx default_model_scale = {
0x20000, 0x00000, 0x00002, 0x00000,
0x00000, 0x10000, 0x00000, 0x00001,
0x00000, 0x00000, 0x00000, 0x00000,
0x00000, 0x00000, 0x00000, 0x00000
};
static Mtx logo_projection = {
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0xFFFF0000, 0x00000000, 0x00000001,
0x00CC0000, 0x00000000, 0x000000F9, 0x00000000,
0x00000000, 0x00000000, 0x0000007C, 0x00000000
};
static Mtx logo_model_scale = {
0x10000, 0x00000, 0x00001, 0x00000,
0x00000, 0x10000, 0x00000, 0x00001,
0x00000, 0x00000, 0x00000, 0x00000,
0x00000, 0x00000, 0x00000, 0x00000
};
static Gfx initial_dl[] = {
gsDPSetScissor(G_SC_NON_INTERLACE, 0, 0, 640, 480),
gsSPClipRatio(FRUSTRATIO_2),
gsSPViewport(&viewport),
gsSPMatrix(&projection, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION),
gsSPMatrix(&lookat, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION),
gsSPMatrix(&default_model_scale, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW),
gsDPSetOtherMode(G_AD_DISABLE | G_CD_DISABLE | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, G_AC_NONE | G_ZS_PIXEL | G_RM_NOOP | G_RM_NOOP2),
gsSPEndDisplayList(),
};
static Gfx logo_initial_dl[] = {
gsDPSetScissor(G_SC_NON_INTERLACE, 0, 0, 640, 480),
gsSPClipRatio(FRUSTRATIO_2),
gsSPViewport(&viewport),
gsSPMatrix(&logo_projection, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION),
gsSPMatrix(&lookat, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION),
gsSPMatrix(&default_model_scale, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW),
gsDPSetOtherMode(G_AD_DISABLE | G_CD_DISABLE | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, G_AC_NONE | G_ZS_PIXEL | G_RM_NOOP | G_RM_NOOP2),
gsSPEndDisplayList(),
};
static Gfx logo_draw_dl[] = {
gsSPDisplayList(logo_initial_dl),
gsSPDisplayList(gam_win1_moji_setup),
gsDPSetPrimColor(0, 255, 220, 0, 0, 255),
gsSPMatrix(&logo_model_scale, G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW),
gsSPDisplayList(logo_ninT_model),
gsSPPopMatrix(G_MTX_MODELVIEW),
gsSPEndDisplayList(),
};
static Gfx step1_draw_dl[] = {
gsSPDisplayList(initial_dl),
gsSPDisplayList(gam_win1_moji_setup),
gsSPDisplayList(gam_win1_winT_model),
gsSPDisplayList(gam_win1_moji_model),
gsDPSetPrimColor(0, 255, 90, 90, 155, 255),
gsSPDisplayList(0x08000000),
gsDPSetPrimColor(0, 255, 50, 30, 150, 255),
gsSPDisplayList(0x09000000),
gsSPDisplayList(gam_win1_cursor_setup),
gsSPMatrix(&model_cursor, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW),
gsSPDisplayList(gam_win1_cursor_model),
gsSPPopMatrix(G_MTX_MODELVIEW),
gsSPEndDisplayList(),
};
static Gfx step2_draw_dl[] = {
gsSPDisplayList(initial_dl), /* call initial dl */
gsSPDisplayList(gam_win1_moji_setup), /* call gam_win1_moji_setup */
gsDPSetPrimColor(0, 255, 225, 255, 255, 255), /* set primitive color to off-white */
gsSPDisplayList(gam_win2_winT_model), /* call gam_win2_winT_model */
gsDPSetPrimColor(0, 255, 50, 50, 60, 255), /* set primitive color to dark blue-gray */
gsSPDisplayList(0x08000000), /* call progressive mode model set in step2_make_dl */
gsSPEndDisplayList(),
};
static int pad_good_frame_count = -1;
static void step0_make_dl(Gfx** gpp) {
Gfx* g = *gpp;
if (APPNMI_TESTMODE_GET()) {
DVDDiskID* diskId = DVDGetCurrentDiskID();
if (boot_copyDate != NULL) {
JW_JUTReport(150, 400, 1, "COPYDATE: %.17s", boot_copyDate);
}
if (diskId != NULL) {
JW_JUTReport(150, 330, 1, "<DISK ID>");
JW_JUTReport(150, 342, 1, "GAMENAME: %.4s", diskId->gameName);
JW_JUTReport(150, 354, 1, " COMPANY: %.2s", diskId->company);
JW_JUTReport(150, 366, 1, " VERSION: 0x%02X(%d)", diskId->gameVersion, diskId->gameVersion);
}
JW_JUTReport(150, 330, 1, "<DISK ID>"); /* I belive the above <DISK ID> is a 'bug', because this is the exact same print */
JW_JUTReport(150, 50, 1, "SDK VERSION: 12Dec2001 Patch4");
if (OSGetFontEncode() == OS_FONT_SJIS) {
JW_JUTReport(150, 100, 1, " ****** WARNING ******");
JW_JUTReport(150, 112, 1, "The DISP SW is JAPAN MODE now");
JW_JUTReport(150, 124, 1, "but this GAME is NES version");
}
}
if (APPNMI_SHOPPROMOVERSION_GET()) {
JW_JUTReport(150, 410, 1, "SHOP PROMOTE VERSION");
}
gSPDisplayList(g++, logo_draw_dl);
*gpp = g;
}
extern void make_dl_nintendo_logo(Gfx** gpp, u32 alpha) {
Gfx* g = *gpp;
gSPSegment(g++, G_MWO_SEGMENT_8, logo_initial_dl); /* segment 8 = logo_initial_dl */
gSPSegment(g++, G_MWO_SEGMENT_9, gam_win1_moji_setup); /* segment 9 = gam_win1_moji_setup */
gSPDisplayList(g++, SEGMENT_ADDR(8, 0)); /* call to segment 8 (logo_initial_dl) */
gSPDisplayList(g++, SEGMENT_ADDR(9, 0)); /* call to segment 9 (gam_win1_moji_setup) */
gSPMatrix(g++, &logo_model_scale, G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW); /* set logo model scale */
gDPSetCombineMode(g++, G_CC_LOGO, G_CC_LOGO); /* set color combiner for logo */
gDPSetPrimColor(g++, 0, 255, LOGO_COLOR_R, LOGO_COLOR_G, LOGO_COLOR_B, alpha); /* set logo color */
gSPDisplayList(g++, logo_ninT_model); /* call logo display list (logo_ninT_model) */
gSPPopMatrix(g++, G_MTX_MODELVIEW); /* remove logo model scale */
*gpp = g;
}
static void step1_make_dl(Gfx** gpp) {
static Gfx* yes_no_model[2] = {
gam_win1_moji2_model,
gam_win1_moji3_model
};
Gfx* g = *gpp;
guTranslate(&model_cursor, progressive_mode != 0 ? -42 : 0, -86.0f, 0.0f);
gSPSegment(g++, G_MWO_SEGMENT_8, yes_no_model[progressive_mode]); /* segment 8 is yes/no */
gSPSegment(g++, G_MWO_SEGMENT_9, yes_no_model[progressive_mode ^ 1]); /* segment 9 is inverse yes/no */
gSPDisplayList(g++, step1_draw_dl); /* call step1 display list */
*gpp = g;
}
static void step2_make_dl(Gfx** gpp) {
Gfx* g = *gpp;
gSPSegment(g++, G_MWO_SEGMENT_8, progressive_mode != 0 ? gam_win2_moji_model : gam_win3_moji_model);
gSPDisplayList(g++, step2_draw_dl);
*gpp = g;
}
static u8 menu_step;
static void make_dl(Gfx* gfx, int size) {
Gfx* g = gfx;
step0_make_dl(&g);
if (menu_step == 1 || menu_step == 11) {
step1_make_dl(&g);
}
else if (menu_step == 2) {
step2_make_dl(&g);
}
gDPFullSync(g++);
gSPEndDisplayList(g++);
}
extern void exec_dl(Gfx* gfx) {
emu64_init();
emu64_taskstart(gfx);
emu64_cleanup();
}
static Z_OSTime start_time;
static u32 button;
static u32 trigger;
static int frame_count;
static Z_OSTime limit_time;
static int select_done;
static u8 menu_sub_frame;
extern void keycheck() {
Z_OSTime now = osGetTime();
Z_OSTime delta = now - start_time;
u32 t;
u32 error;
JC_JUTGamePad_read();
button = JW_JUTGamepad_getButton();
t = JW_JUTGamepad_getTrigger();
trigger = t;
trigger |= (((t >> 16) | (t >> 24)) & 0xF);
error = JW_JUTGamepad_getErrorStatus();
if (pad_good_frame_count < 0 && error == 0) {
pad_good_frame_count = frame_count;
}
if (menu_step == 0) {
if ((button == B || OSGetProgressiveMode()) && VIGetDTVStatus()) {
progressive_mode = VIGetDTVStatus();
menu_step = 1;
start_time = now;
limit_time = button == B ? INITIAL_MENU_LIMIT_TIME : INITIAL_MENU_LIMIT_TIME; // 10 second limit
}
else {
if (limit_time < delta) {
menu_step = 3;
select_done = TRUE;
start_time = now;
}
}
}
else if (menu_step == 1) {
if ((trigger & A) != 0 || limit_time < delta) {
OSSetProgressiveMode(progressive_mode);
start_time = now;
menu_step = 11;
menu_sub_frame = 0;
}
else {
if ((trigger & DPAD_LEFT)) {
progressive_mode = TRUE;
start_time = now;
limit_time = INITIAL_MENU_LIMIT_TIME;
}
else {
if ((trigger & DPAD_RIGHT)) {
progressive_mode = FALSE;
start_time = now;
limit_time = INITIAL_MENU_LIMIT_TIME;
}
}
}
}
else if (menu_step == 11) {
switch (menu_sub_frame) {
case 0:
{
JC_JFWDisplay_startFadeOut(JC_JFWDisplay_getManager(), 10);
break;
}
case 5:
{
JW_SetProgressiveMode(progressive_mode);
break;
}
case 105:
{
JC_JFWDisplay_startFadeIn(JC_JFWDisplay_getManager(), 15);
start_time = now;
menu_step = 2;
break;
}
}
menu_sub_frame++;
}
else {
if (menu_step == 2 && INITIAL_MENU_SELECT_WAIT_TIME < delta) {
menu_step = 3;
select_done = TRUE;
start_time = now;
}
}
}
static OSMessageQueue commandQ;
static int fadeout_step;
static int load_game_done;
static Gfx gfxbuf[16];
static OSMessageQueue statusQ;
static OSThread* Thread_p;
static void* initialMenuStack;
static OSMessage commandMsgBuf[2];
static OSMessage statusMsgBuf[1];
extern void proc(void* arg) {
u32 msg;
int proc_done;
OSTimer timer;
osRecvMesg(&commandQ, (OSMessage*)&msg, OS_MESSAGE_BLOCK);
progressive_mode = FALSE;
fadeout_step = 0;
menu_step = 0;
select_done = FALSE;
load_game_done = FALSE;
start_time = osGetTime();
limit_time = OSMicrosecondsToTicks(5000000ull);
pad_good_frame_count = -1;
frame_count = 0;
do {
if (OSGetResetSwitchState()) {
__osResetSwitchPressed = TRUE;
}
else {
if (__osResetSwitchPressed) {
osShutdownStart(OS_RESET_RESTART);
}
}
if (!osRecvMesg(&commandQ, (OSMessage*)&msg, OS_MESSAGE_NOBLOCK)) {
if (msg == INITIAL_MENU_OSMESG_FADEOUT_STEP) {
fadeout_step = 2;
}
if (msg == INITIAL_MENU_OSMESG_LOAD_GAME_DONE) {
load_game_done = TRUE;
}
}
if (fadeout_step == 0 && select_done && load_game_done) {
fadeout_step = 1;
osSetTimer(&timer, OSMicrosecondsToTicks(533312ull), 0, &commandQ, (OSMessage)INITIAL_MENU_OSMESG_FADEOUT_STEP);
JC_JFWDisplay_startFadeOut(JC_JFWDisplay_getManager(), 32);
}
if ((menu_step != 0 && menu_step != 3) || dvderr_draw() == FALSE) {
JW_BeginFrame();
keycheck();
make_dl(gfxbuf, 16);
exec_dl(gfxbuf);
JW_EndFrame();
frame_count++;
}
proc_done = FALSE;
if (fadeout_step == 2 && select_done && load_game_done) {
proc_done = TRUE;
}
} while (!proc_done);
osSendMesg(&statusQ, (OSMessage)msg, OS_MESSAGE_NOBLOCK); // signal done
}
static void* my_alloc(size_t size) {
return JW_Alloc(size, 32);
}
static void my_free(void* ptr) {
JW_Free(ptr);
}
extern void initial_menu_init() {
Thread_p = (OSThread*)my_alloc(sizeof(OSThread));
initialMenuStack = my_alloc(INITIAL_MENU_STACK_SIZE);
if (Thread_p == NULL || initialMenuStack == NULL) {
OSReport("initial_menu_init: Memory insufficiency.\n");
my_free(Thread_p);
Thread_p = NULL;
my_free(initialMenuStack);
initialMenuStack = NULL;
}
else {
osCreateMesgQueue(&commandQ, commandMsgBuf, 2);
osCreateMesgQueue(&statusQ, statusMsgBuf, 1);
osCreateThread2(Thread_p, 1, &proc, NULL, (void*)((int)initialMenuStack + INITIAL_MENU_STACK_SIZE), INITIAL_MENU_STACK_SIZE, 1);
osStartThread(Thread_p);
JC_JFWDisplay_startFadeIn(JC_JFWDisplay_getManager(), 32);
osSendMesg(&commandQ, (OSMessage)INITIAL_MENU_OSMESG_INIT_DONE, OS_MESSAGE_NOBLOCK);
}
}
extern void initial_menu_cleanup() {
int msg;
if (Thread_p != NULL) {
if (!osRecvMesg(&commandQ, (OSMessage*)&msg, OS_MESSAGE_NOBLOCK)) {
osSendMesg(&commandQ, (OSMessage)INITIAL_MENU_OSMESG_LOAD_GAME_DONE, OS_MESSAGE_NOBLOCK);
osRecvMesg(&statusQ, (OSMessage*)&msg, OS_MESSAGE_BLOCK);
}
osDestroyThread(Thread_p);
}
JW_SetLogoMode(0);
JC_JFWDisplay_startFadeIn(JC_JFWDisplay_getManager(), 32);
my_free(Thread_p);
Thread_p = NULL;
my_free(initialMenuStack);
initialMenuStack = NULL;
}
+71
View File
@@ -0,0 +1,71 @@
# TODO: this program is slightly messed up. It can output the wrong end address for symbols. Will fix later. Use with caution until then.
import argparse
from ruamel.yaml import YAML, comments
class HexInt(int):
def __new__(cls, *args, **kwargs):
return super().__new__(cls, *args, **kwargs)
def hexint_presenter(dumper, data):
return dumper.represent_scalar('tag:yaml.org,2002:int', hex(data))
def find_symbol_and_append(input_string, config_file_path, src_path="config/symbols.yml", dest_path="config/assets.yml"):
yaml = YAML()
yaml.representer.add_representer(HexInt, hexint_presenter)
# Load the symbols file
with open(src_path, 'r') as symbols_file:
symbols_data = yaml.load(symbols_file)
# Search for the input string and store its address along with the next address
address_pair = []
found_symbol = False
for section, data in symbols_data.items():
for address, name in data.items():
if found_symbol:
address_pair.append(HexInt(address))
break
if name == input_string:
found_symbol = True
address_pair.append(HexInt(address))
if found_symbol:
break
# If the input string was found, append it to the assets file
if address_pair:
# Make the pair yaml friendly
address_pair = comments.CommentedSeq(address_pair)
address_pair.fa.set_flow_style()
# Load the assets file
with open(dest_path, 'r') as assets_file:
assets_data = yaml.load(assets_file)
# If the file is empty, initialize a new dict
if assets_data is None:
assets_data = {}
# Create entry or update existing entry under the config file path
if config_file_path not in assets_data:
assets_data[config_file_path] = {}
if input_string in assets_data[config_file_path]:
assets_data[config_file_path][input_string]['addrs'] = address_pair
else:
assets_data[config_file_path][input_string] = {'addrs': address_pair}
# Write back to the assets file
with open(dest_path, 'w') as assets_file:
yaml.dump(assets_data, assets_file)
def main():
parser = argparse.ArgumentParser(description='Search for a symbol in a YAML file and append to another YAML file.')
parser.add_argument('input_string', help='The symbol name to search for.')
parser.add_argument('config_file_path', help='The path of the configuration file.')
args = parser.parse_args()
find_symbol_and_append(args.input_string, args.config_file_path)
if __name__ == '__main__':
main()