diff --git a/include/common.h b/include/common.h index 0c095c1..5892607 100644 --- a/include/common.h +++ b/include/common.h @@ -554,13 +554,13 @@ extern Gfx* PTR_DISPLAY_LIST; extern Gfx DISPLAY_LIST_8018FC80[]; -extern Vp obVpMinResolution; -extern Vp obVpMaxResolution; +extern const Vp obVpMinResolution; +extern const Vp obVpMaxResolution; -extern Gfx obDlSetupMinResolution[]; -extern Gfx obDlSetupMaxResolution[]; +extern const Gfx obDlSetupMinResolution[]; +extern const Gfx obDlSetupMaxResolution[]; -extern Lights2 LIGHTS_801869A0; +extern const Lights2 LIGHTS_801869A0; extern SomethingMusic __MAYBE_SONG_800EB0B0; extern SomethingMusic __MAYBE_SONG_800EB100; diff --git a/splat.yaml b/splat.yaml index 1b0beaf..4b65104 100644 --- a/splat.yaml +++ b/splat.yaml @@ -41,7 +41,6 @@ segments: - [0x1000, asm, "entry_code"] - name: main - dir: main_segment type: code start: 0x1060 vram: 0x80070C60 @@ -373,9 +372,10 @@ segments: vram: 0x8016AF80 bss_size: 0x6C60 # Complete - find_file_boundaries: False + # find_file_boundaries: False subsegments: - [0x40E80, asm, "segment_obdata/ob_blushing_ship"] + - [0x41C20, asm, "segment_obdata/ob_hard_hands"] - [0x420D0, asm, "segment_obdata/ob_awful_bells"] - [0x42C30, asm, "segment_obdata/ob_ugliest_snow"] - [0x42C90, asm, "segment_obdata/ob_lame_store"] @@ -393,34 +393,79 @@ segments: # - [0x4EF10, c, "ob_pumped_books"] - [0x4EF10, asm, "segment_obdata/ob_pumped_books"] - [0x514B0, asm, "segment_obdata/ob_squeamish_mask"] + - [0x564D0, asm, "segment_obdata/ob_empty_quill"] + - [0x5A030, asm, "segment_obdata/ob_utopian_queen"] + - [0x5AC70, asm, "segment_obdata/ob_mint_plantation"] - [0x5AFF0, asm, "segment_obdata/ob_pithy_collar"] - [0x5C060, asm, "segment_obdata/ob_hallowed_class"] - [0x5C1D0, asm, "segment_obdata/ob_driven_channel"] - - [0x5C210, data, "gfx/ob_deft_toys"] - - [0x5CE70, .data, "data/strategy"] - - [0x5CEF0, data] - - [0x5D560, data] - - [0x613B0, data, "data/item"] - - [0x647F0, data, "data/character_name"] - - [0x64BE0, data] - - [0x652E0, data, "gfx/ob_dazzling_squirrel"] - - [0x65380, data] - - [0x65970, data, "gfx/ob_thundering_truck"] - - [0x659E0, data] - - [0x65B80, data, "gfx/ob_genial_crib"] - - [0x65C50, data] - - [0x65CC0, data] + - [0x5C210, .rodata, "segment_obdata/vpres"] + - [0x5C280, .rodata, "gfx/dpfillrect"] + - [0x5C510, .rodata, "gfx/dpfilltex"] + - [0x5C8A0, .rodata, "gfx/ob_mutual_ball"] + - [0x5CAD0, rodata] + - [0x5CB60, rodata] + - [0x5CC00, rodata] + - [0x5CC90, rodata] + - [0x5CCD0, rodata] + - [0x5CD20, rodata] + - [0x5CD70, rodata] + - [0x5CEF0, rodata] + - [0x5CF00, rodata] + - [0x5CF20, rodata] + - [0x5CF30, rodata] + - [0x5D560, rodata] + - [0x613B0, rodata] + - [0x647F0, rodata, "segment_obdata/ob_hard_hands"] + - [0x650A0, rodata] + - [0x650B0, rodata] + - [0x65220, rodata] + - [0x65230, rodata] + - [0x65260, rodata] + - [0x65280, rodata] + - [0x652A0, rodata] + - [0x65970, rodata] + - [0x659E0, rodata] + - [0x65B00, rodata] + - [0x65B80, rodata] + - [0x65C10, rodata] + - [0x65C50, rodata] + - [0x65CC0, rodata, "segment_obdata/ob_empty_quill"] + - [0x65D60, rodata, "segment_obdata/ob_blushing_ship"] + - [0x65DD0, rodata] + - [0x66310, rodata] + - [0x663C0, rodata] + - [0x66570, rodata, "segment_obdata/ob_hunky_silver"] + - [0x66B60, rodata, "segment_obdata/ob_worthless_drawer"] + - [0x66B80, rodata, "segment_obdata/ob_pumped_books"] + - [0x66D00, rodata, "segment_obdata/ob_squeamish_mask"] + - [0x66DA0, rodata, "segment_obdata/ob_utopian_queen"] + + # - [0x5C210, data, "gfx/ob_deft_toys"] + # - [0x5CE70, .data, "data/strategy"] + # - [0x5CEF0, data] + # - [0x5D560, data] + # - [0x613B0, data, "data/item"] + # - [0x647F0, data, "data/character_name"] + # - [0x64BE0, data] + # - [0x652E0, data, "gfx/ob_dazzling_squirrel"] + # - [0x65380, data] + # - [0x65970, data, "gfx/ob_thundering_truck"] + # - [0x659E0, data] + # - [0x65B80, data, "gfx/ob_genial_crib"] + # - [0x65C50, data] + # - [0x65CC0, data] # - [0x5C210, .data, "dl"] # - [0x5CE70, .data, "strategy.data"] # - [0x5D560, .data, "data"] - - [0x65D60, rodata, "segment_obdata/ob_blushing_ship"] - - [0x66570, rodata, "segment_obdata/ob_hunky_silver"] - - [0x66B60, rodata, "segment_obdata/ob_worthless_drawer"] - - [0x66B80, rodata, "segment_obdata/ob_pumped_books"] - - [0x66D00, rodata, "segment_obdata/ob_squeamish_mask"] + # - [0x65D60, rodata, "segment_obdata/ob_blushing_ship"] + # - [0x66570, rodata, "segment_obdata/ob_hunky_silver"] + # - [0x66B60, rodata, "segment_obdata/ob_worthless_drawer"] + # - [0x66B80, rodata, "segment_obdata/ob_pumped_books"] + # - [0x66D00, rodata, "segment_obdata/ob_squeamish_mask"] - { start: 0x66E10, type: bss, vram: 0x80190F10 } @@ -549,7 +594,7 @@ segments: - { start: 0xDDF60, type: bss, vram: 0x801F1500 } - [0xDDF60, bin] - + # __SOME_OVERLAY_TABLE[2] - type: code dir: overlay_E48F0 diff --git a/src/gfx/dpfillrect.c b/src/gfx/dpfillrect.c new file mode 100644 index 0000000..59f4214 --- /dev/null +++ b/src/gfx/dpfillrect.c @@ -0,0 +1,89 @@ +#include + +#include "common.h" + +/* 5C280 80186380 */ +const Gfx DP_FILL_RECT_639x479[] = { + gsDPPipeSync(), + gsDPPipeSync(), + gsDPFillRectangle(0, 0, 639, 29), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsDPFillRectangle(0, 30, 639, 59), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsDPFillRectangle(0, 60, 639, 89), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsDPFillRectangle(0, 90, 639, 119), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsDPFillRectangle(0, 120, 639, 149), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsDPFillRectangle(0, 150, 639, 179), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsDPFillRectangle(0, 180, 639, 209), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsDPFillRectangle(0, 210, 639, 239), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsDPFillRectangle(0, 240, 639, 269), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsDPFillRectangle(0, 270, 639, 299), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsDPFillRectangle(0, 300, 639, 329), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsDPFillRectangle(0, 330, 639, 359), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsDPFillRectangle(0, 360, 639, 389), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsDPFillRectangle(0, 390, 639, 419), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsDPFillRectangle(0, 420, 639, 449), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsDPFillRectangle(0, 450, 639, 479), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsSPEndDisplayList(), +}; \ No newline at end of file diff --git a/src/gfx/dpfilltex.c b/src/gfx/dpfilltex.c new file mode 100644 index 0000000..0e58a07 --- /dev/null +++ b/src/gfx/dpfilltex.c @@ -0,0 +1,89 @@ +#include + +#include "common.h" + +/* 5C510 80186610 */ +const Gfx DL_DRAW_TEX_2560x1920[] = { + gsSPNoOp(), + gsDPPipeSync(), + gsSPTextureRectangle(0, 0, qu102(640), qu102(30), G_TX_RENDERTILE, 0, 0, 0, 0), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsSPTextureRectangle(0, qu102(30), qu102(640), qu102(60), G_TX_RENDERTILE, 0, 0, 0, 0), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsSPTextureRectangle(0, qu102(60), qu102(640), qu102(90), G_TX_RENDERTILE, 0, 0, 0, 0), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsSPTextureRectangle(0, qu102(90), qu102(640), qu102(120), G_TX_RENDERTILE, 0, 0, 0, 0), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsSPTextureRectangle(0, qu102(120), qu102(640), qu102(150), G_TX_RENDERTILE, 0, 0, 0, 0), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsSPTextureRectangle(0, qu102(150), qu102(640), qu102(180), G_TX_RENDERTILE, 0, 0, 0, 0), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsSPTextureRectangle(0, qu102(180), qu102(640), qu102(210), G_TX_RENDERTILE, 0, 0, 0, 0), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsSPTextureRectangle(0, qu102(210), qu102(640), qu102(240), G_TX_RENDERTILE, 0, 0, 0, 0), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsSPTextureRectangle(0, qu102(240), qu102(640), qu102(270), G_TX_RENDERTILE, 0, 0, 0, 0), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsSPTextureRectangle(0, qu102(270), qu102(640), qu102(300), G_TX_RENDERTILE, 0, 0, 0, 0), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsSPTextureRectangle(0, qu102(300), qu102(640), qu102(330), G_TX_RENDERTILE, 0, 0, 0, 0), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsSPTextureRectangle(0, qu102(330), qu102(640), qu102(360), G_TX_RENDERTILE, 0, 0, 0, 0), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsSPTextureRectangle(0, qu102(360), qu102(640), qu102(390), G_TX_RENDERTILE, 0, 0, 0, 0), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsSPTextureRectangle(0, qu102(390), qu102(640), qu102(420), G_TX_RENDERTILE, 0, 0, 0, 0), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsSPTextureRectangle(0, qu102(420), qu102(640), qu102(450), G_TX_RENDERTILE, 0, 0, 0, 0), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsDPPipeSync(), + gsSPTextureRectangle(0, qu102(450), qu102(640), qu102(480), G_TX_RENDERTILE, 0, 0, 0, 0), + gsDPPipeSync(), + gsSPNoOp(), + gsDPPipeSync(), + gsSPEndDisplayList(), +}; \ No newline at end of file diff --git a/src/gfx/ob_mutual_ball.c b/src/gfx/ob_mutual_ball.c new file mode 100644 index 0000000..1a68f14 --- /dev/null +++ b/src/gfx/ob_mutual_ball.c @@ -0,0 +1,77 @@ +#include + +#include "common.h" + +/* 5C8A0 801869A0 */ +const Lights2 LIGHTS_801869A0 = gdSPDefLights2( + // ar, ag, ab + 5, 5, 5, + // r1, g1, b1 + 100, 100, 0, + // x1, y1, z1 + 32, 64, 32, + // r2, g2, b2 + 50, 50, 0x00, + // x2, y2, z2 + 15, 30, 100 +); + +/* 5C8C8 801869C8 */ +const Gfx DISPLAY_LIST_801869C8[] = { + gsDPPipeSync(), + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsDPPipeSync(), + gsSPViewport(&obVpMinResolution), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_OFF), + gsSPSetGeometryMode(G_SHADE | G_SHADING_SMOOTH), + gsSPClipRatio(FRUSTRATIO_2), + gsSPFogPosition(900, 1000), + gsSPSetLights2(LIGHTS_801869A0), + gsDPPipeSync(), + gsDPPipelineMode(G_PM_NPRIMITIVE), + gsDPPipeSync(), + gsDPSetScissor(G_SC_NON_INTERLACE, 0, 0, 319, 239), + gsDPPipeSync(), + gsDPSetTextureLOD(G_TL_TILE), + gsDPSetTextureLUT(G_TT_NONE), + gsDPSetTextureDetail(G_TD_CLAMP), + gsDPSetTexturePersp(G_TP_PERSP), + gsDPSetTextureFilter(G_TF_BILERP), + gsDPSetTextureConvert(G_TC_FILT), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetCombineKey(G_CK_NONE), + gsDPSetAlphaCompare(G_AC_NONE), + gsDPSetRenderMode(G_RM_OPA_SURF, G_RM_OPA_SURF2), + gsDPNoOp(), + gsDPSetColorDither(G_CD_MAGICSQ), + gsDPSetEnvColor(0x00, 0x00, 0x00, 0x00), + gsDPSetPrimColor(0, 0, 0x00, 0x00, 0x00, 0x00), + gsDPSetBlendColor(0x00, 0x00, 0x00, 0x00), + gsDPSetFogColor(0x00, 0x00, 0x00, 0x00), + gsDPSetFillColor(0x00000000), + gsDPSetPrimDepth(0, 0), + gsDPSetConvert(0, 0, 0, 0, 0, 0), + gsDPSetKeyR(0x00, 0x00, 0), + gsDPSetKeyGB(0x00, 0x00, 0, 0x00, 0x00, 0), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, 1, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, 2, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, 3, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, 4, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, 5, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, 6, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD), + gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, 0, 0), + gsDPSetTileSize(1, 0, 0, 0, 0), + gsDPSetTileSize(2, 0, 0, 0, 0), + gsDPSetTileSize(3, 0, 0, 0, 0), + gsDPSetTileSize(4, 0, 0, 0, 0), + gsDPSetTileSize(5, 0, 0, 0, 0), + gsDPSetTileSize(6, 0, 0, 0, 0), + gsDPSetTileSize(G_TX_LOADTILE, 0, 0, 0, 0), + gsSPSetLights2(LIGHTS_801869A0), + gsDPPipeSync(), + gsSPEndDisplayList(), +}; \ No newline at end of file diff --git a/src/segment_obdata/vpres.c b/src/segment_obdata/vpres.c new file mode 100644 index 0000000..22aa034 --- /dev/null +++ b/src/segment_obdata/vpres.c @@ -0,0 +1,41 @@ +#include + +#include "common.h" + +/* 5C210 80186310 */ +const Vp obVpMinResolution = { + (SCREEN_WIDTH_MIN / 2) * 4, (SCREEN_HEIGHT_MIN / 2) * 4, 511, 0, + (SCREEN_WIDTH_MIN / 2) * 4, (SCREEN_HEIGHT_MIN / 2) * 4, 511, 0 +}; + +/* 5C220 80186320 */ +const Vp obVpMaxResolution = { + (SCREEN_WIDTH_MAX / 2) * 4, (SCREEN_HEIGHT_MAX / 2) * 4, 511, 0, + (SCREEN_WIDTH_MAX / 2) * 4, (SCREEN_HEIGHT_MAX / 2) * 4, 511, 0 +}; + +/* 5C230 80186330 */ +const Gfx obDlSetupMinResolution[] = { + gsSPViewport(&obVpMinResolution), + gsDPPipeSync(), + gsDPSetScissor( + G_SC_NON_INTERLACE, + 0, 0, + SCREEN_WIDTH_MIN - 1, SCREEN_HEIGHT_MIN - 1 + ), + gsDPPipeSync(), + gsSPEndDisplayList(), +}; + +// /* 5C258 80186358 */ +const Gfx obDlSetupMaxResolution[] = { + gsSPViewport(&obVpMaxResolution), + gsDPPipeSync(), + gsDPSetScissor( + G_SC_NON_INTERLACE, + 0, 0, + SCREEN_WIDTH_MAX, SCREEN_HEIGHT_MAX + ), + gsDPPipeSync(), + gsSPEndDisplayList(), +}; \ No newline at end of file