Skip to content

Commit

Permalink
More options to textures applied
Browse files Browse the repository at this point in the history
  • Loading branch information
GSKirox committed Sep 22, 2023
1 parent c38497b commit 22540c4
Show file tree
Hide file tree
Showing 14 changed files with 31,473 additions and 30,857 deletions.
2,486 changes: 1,255 additions & 1,231 deletions ASM/build/asm_symbols.txt

Large diffs are not rendered by default.

Binary file modified ASM/build/bundle.o
Binary file not shown.
610 changes: 311 additions & 299 deletions ASM/build/c_symbols.txt

Large diffs are not rendered by default.

77 changes: 46 additions & 31 deletions ASM/c/chests.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@ extern uint8_t SHUFFLE_CHEST_GAME;
uint32_t CHEST_TEXTURE_MATCH_CONTENTS = 0;
uint32_t CHEST_SIZE_MATCH_CONTENTS = 0;
uint32_t CHEST_SIZE_TEXTURE = 0;
extern uint8_t CHEST_GOLD_TEXTURE;
extern uint8_t CHEST_GILDED_TEXTURE;
extern uint8_t CHEST_SILVER_TEXTURE;
extern uint8_t CHEST_SKULL_TEXTURE;
extern uint8_t CHEST_HEART_TEXTURE;
extern uint8_t SOA_UNLOCKS_CHEST_TEXTURE;

extern Mtx_t* write_matrix_stack_top(z64_gfx_t* gfx);
asm(".equ write_matrix_stack_top, 0x800AB900");
Expand Down Expand Up @@ -77,31 +83,41 @@ void set_chest_texture(z64_gfx_t *gfx, uint8_t chest_type, Gfx **opa_ptr) {
void* baseTexture = (void*)BROWN_BASE_TEXTURE;

if (CHEST_SIZE_TEXTURE || CHEST_TEXTURE_MATCH_CONTENTS) {
switch (chest_type) {
case GILDED_CHEST:
frontTexture = get_texture(TEXTURE_ID_CHEST_FRONT_GILDED);
baseTexture = get_texture(TEXTURE_ID_CHEST_BASE_GILDED);
break;

case SILVER_CHEST:
frontTexture = get_texture(TEXTURE_ID_CHEST_FRONT_SILVER);
baseTexture = get_texture(TEXTURE_ID_CHEST_BASE_SILVER);
break;

case SKULL_CHEST_SMALL:
case SKULL_CHEST_BIG:
frontTexture = get_texture(TEXTURE_ID_CHEST_FRONT_SKULL);
baseTexture = get_texture(TEXTURE_ID_CHEST_BASE_SKULL);
break;

case HEART_CHEST_SMALL:
case HEART_CHEST_BIG:
frontTexture = get_texture(TEXTURE_ID_CHEST_FRONT_HEART);
baseTexture = get_texture(TEXTURE_ID_CHEST_BASE_HEART);
break;

default:
break;
if (!SOA_UNLOCKS_CHEST_TEXTURE || z64_file.stone_of_agony != 0) {
switch (chest_type) {
case GILDED_CHEST:
if (CHEST_GILDED_TEXTURE) {
frontTexture = get_texture(TEXTURE_ID_CHEST_FRONT_GILDED);
baseTexture = get_texture(TEXTURE_ID_CHEST_BASE_GILDED);
}
break;

case SILVER_CHEST:
if (CHEST_SILVER_TEXTURE) {
frontTexture = get_texture(TEXTURE_ID_CHEST_FRONT_SILVER);
baseTexture = get_texture(TEXTURE_ID_CHEST_BASE_SILVER);
}
break;

case SKULL_CHEST_SMALL:
case SKULL_CHEST_BIG:
if (CHEST_SKULL_TEXTURE) {
frontTexture = get_texture(TEXTURE_ID_CHEST_FRONT_SKULL);
baseTexture = get_texture(TEXTURE_ID_CHEST_BASE_SKULL);
}
break;

case HEART_CHEST_SMALL:
case HEART_CHEST_BIG:
if (CHEST_HEART_TEXTURE) {
frontTexture = get_texture(TEXTURE_ID_CHEST_FRONT_HEART);
baseTexture = get_texture(TEXTURE_ID_CHEST_BASE_HEART);
}
break;

default:
break;
}
}
}

Expand All @@ -122,8 +138,8 @@ void draw_chest_base(z64_game_t *game, z64_actor_t *actor, Gfx **opa_ptr)
z64_gfx_t *gfx = game->common.gfx;
uint8_t chest_type = get_chest_type(actor);
gSPMatrix((*opa_ptr)++, write_matrix_stack_top(gfx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
if (chest_type != GOLD_CHEST)
{
if (chest_type != GOLD_CHEST || !CHEST_GOLD_TEXTURE ||
(SOA_UNLOCKS_CHEST_TEXTURE && z64_file.stone_of_agony == 0)) {
set_chest_texture(gfx, chest_type, opa_ptr);
gSPDisplayList((*opa_ptr)++, 0x060006F0);
}
Expand All @@ -138,13 +154,12 @@ void draw_chest_lid(z64_game_t *game, z64_actor_t *actor, Gfx **opa_ptr)
z64_gfx_t *gfx = game->common.gfx;
uint8_t chest_type = get_chest_type(actor);
gSPMatrix((*opa_ptr)++, write_matrix_stack_top(gfx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
if (chest_type != GOLD_CHEST)
{
if (chest_type != GOLD_CHEST || !CHEST_GOLD_TEXTURE ||
(SOA_UNLOCKS_CHEST_TEXTURE && z64_file.stone_of_agony == 0)) {
set_chest_texture(gfx, chest_type, opa_ptr);
gSPDisplayList((*opa_ptr)++, 0x060010C0);
}
else
{
else {
gSPDisplayList((*opa_ptr)++, 0x06001678);
}
}
Expand Down
68 changes: 43 additions & 25 deletions ASM/c/obj_kibako.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@
#define SMALLCRATE_TEXTURE (uint8_t *)0x05011CA0
extern uint8_t POTCRATE_TEXTURES_MATCH_CONTENTS;
extern uint16_t drop_collectible_override_flag;
extern uint8_t POTCRATE_GOLD_TEXTURE;
extern uint8_t POTCRATE_GILDED_TEXTURE;
extern uint8_t POTCRATE_SILVER_TEXTURE;
extern uint8_t POTCRATE_SKULL_TEXTURE;
extern uint8_t POTCRATE_HEART_TEXTURE;
extern uint8_t SOA_UNLOCKS_POTCRATE_TEXTURE;

override_t get_smallcrate_override(z64_actor_t *actor, z64_game_t *game) {
// make a dummy EnItem00 with enough info to get the override
Expand All @@ -32,31 +38,43 @@ void ObjKibako_Draw(z64_actor_t *actor, z64_game_t *game) {

ObjKibako* this = (ObjKibako*)actor;

switch (this->chest_type) {
case GILDED_CHEST:
texture = get_texture(TEXTURE_ID_SMALLCRATE_GOLD);
break;

case SILVER_CHEST:
texture = get_texture(TEXTURE_ID_SMALLCRATE_KEY);
break;

case GOLD_CHEST:
texture = get_texture(TEXTURE_ID_SMALLCRATE_BOSSKEY);
break;

case SKULL_CHEST_SMALL:
case SKULL_CHEST_BIG:
texture = get_texture(TEXTURE_ID_SMALLCRATE_SKULL);
break;

case HEART_CHEST_SMALL:
case HEART_CHEST_BIG:
texture = get_texture(TEXTURE_ID_SMALLCRATE_HEART);
break;

default:
break;
if (!SOA_UNLOCKS_POTCRATE_TEXTURE || z64_file.stone_of_agony != 0) {
switch (this->chest_type) {
case GILDED_CHEST:
if (POTCRATE_GILDED_TEXTURE) {
texture = get_texture(TEXTURE_ID_SMALLCRATE_GOLD);
}
break;

case SILVER_CHEST:
if (POTCRATE_SILVER_TEXTURE) {
texture = get_texture(TEXTURE_ID_SMALLCRATE_KEY);
}
break;

case GOLD_CHEST:
if (POTCRATE_GOLD_TEXTURE) {
texture = get_texture(TEXTURE_ID_SMALLCRATE_BOSSKEY);
}
break;

case SKULL_CHEST_SMALL:
case SKULL_CHEST_BIG:
if (POTCRATE_SKULL_TEXTURE) {
texture = get_texture(TEXTURE_ID_SMALLCRATE_SKULL);
}
break;

case HEART_CHEST_SMALL:
case HEART_CHEST_BIG:
if (POTCRATE_HEART_TEXTURE) {
texture = get_texture(TEXTURE_ID_SMALLCRATE_HEART);
}
break;

default:
break;
}
}

// push custom dlists (that set the palette and textures) to segment 09
Expand Down
68 changes: 43 additions & 25 deletions ASM/c/obj_kibako2.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@

extern uint8_t POTCRATE_TEXTURES_MATCH_CONTENTS;
extern uint16_t drop_collectible_override_flag;
extern uint8_t POTCRATE_GOLD_TEXTURE;
extern uint8_t POTCRATE_GILDED_TEXTURE;
extern uint8_t POTCRATE_SILVER_TEXTURE;
extern uint8_t POTCRATE_SKULL_TEXTURE;
extern uint8_t POTCRATE_HEART_TEXTURE;
extern uint8_t SOA_UNLOCKS_POTCRATE_TEXTURE;

// Hacks the regular crate spawn collectible function to spawn overridden collectibles
void ObjKibako2_SpawnCollectible_Hack(ObjKibako2 *this, z64_game_t *globalCtx) {
Expand Down Expand Up @@ -48,31 +54,43 @@ void ObjKibako2_Draw(z64_actor_t *actor, z64_game_t *game) {

ObjKibako2 *this = (ObjKibako2 *)actor;

switch (this->chest_type) {
case GILDED_CHEST:
texture = get_texture(TEXTURE_ID_CRATE_GOLD);
break;

case SILVER_CHEST:
texture = get_texture(TEXTURE_ID_CRATE_KEY);
break;

case GOLD_CHEST:
texture = get_texture(TEXTURE_ID_CRATE_BOSSKEY);
break;

case SKULL_CHEST_SMALL:
case SKULL_CHEST_BIG:
texture = get_texture(TEXTURE_ID_CRATE_SKULL);
break;

case HEART_CHEST_SMALL:
case HEART_CHEST_BIG:
texture = get_texture(TEXTURE_ID_CRATE_HEART);
break;

default:
break;
if (!SOA_UNLOCKS_POTCRATE_TEXTURE || z64_file.stone_of_agony != 0) {
switch (this->chest_type) {
case GILDED_CHEST:
if (POTCRATE_GILDED_TEXTURE) {
texture = get_texture(TEXTURE_ID_CRATE_GOLD);
}
break;

case SILVER_CHEST:
if (POTCRATE_SILVER_TEXTURE) {
texture = get_texture(TEXTURE_ID_CRATE_KEY);
}
break;

case GOLD_CHEST:
if (POTCRATE_GOLD_TEXTURE) {
texture = get_texture(TEXTURE_ID_CRATE_BOSSKEY);
}
break;

case SKULL_CHEST_SMALL:
case SKULL_CHEST_BIG:
if (POTCRATE_SKULL_TEXTURE) {
texture = get_texture(TEXTURE_ID_CRATE_SKULL);
}
break;

case HEART_CHEST_SMALL:
case HEART_CHEST_BIG:
if (POTCRATE_HEART_TEXTURE) {
texture = get_texture(TEXTURE_ID_CRATE_HEART);
}
break;

default:
break;
}
}

// push custom dlists (that set the palette and textures) to segment 09
Expand Down
70 changes: 44 additions & 26 deletions ASM/c/pots.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@

extern uint8_t POTCRATE_TEXTURES_MATCH_CONTENTS;
extern uint16_t drop_collectible_override_flag;
extern uint8_t POTCRATE_GOLD_TEXTURE;
extern uint8_t POTCRATE_GILDED_TEXTURE;
extern uint8_t POTCRATE_SILVER_TEXTURE;
extern uint8_t POTCRATE_SKULL_TEXTURE;
extern uint8_t POTCRATE_HEART_TEXTURE;
extern uint8_t SOA_UNLOCKS_POTCRATE_TEXTURE;

override_t get_pot_override(z64_actor_t *actor, z64_game_t *game) {
EnItem00 dummy;
Expand Down Expand Up @@ -70,32 +76,44 @@ void draw_pot(z64_actor_t *actor, z64_game_t *game) {
}

// get override texture
switch (chest_type) {
case GILDED_CHEST:
side_texture = get_texture(TEXTURE_ID_POT_GOLD);
break;

case SILVER_CHEST:
side_texture = get_texture(TEXTURE_ID_POT_KEY);
break;

case GOLD_CHEST:
side_texture = get_texture(TEXTURE_ID_POT_BOSSKEY);
break;

case SKULL_CHEST_SMALL:
case SKULL_CHEST_BIG:
side_texture = get_texture(TEXTURE_ID_POT_SKULL);
break;

case HEART_CHEST_SMALL:
case HEART_CHEST_BIG:
side_texture = get_texture(TEXTURE_ID_POT_SIDE_HEART);
top_texture = get_texture(TEXTURE_ID_POT_TOP_HEART);
break;

default:
break;
if (!SOA_UNLOCKS_POTCRATE_TEXTURE || z64_file.stone_of_agony != 0) {
switch (chest_type) {
case GILDED_CHEST:
if (POTCRATE_GILDED_TEXTURE) {
side_texture = get_texture(TEXTURE_ID_POT_GOLD);
}
break;

case SILVER_CHEST:
if (POTCRATE_SILVER_TEXTURE) {
side_texture = get_texture(TEXTURE_ID_POT_KEY);
}
break;

case GOLD_CHEST:
if (POTCRATE_GOLD_TEXTURE) {
side_texture = get_texture(TEXTURE_ID_POT_BOSSKEY);
}
break;

case SKULL_CHEST_SMALL:
case SKULL_CHEST_BIG:
if (POTCRATE_SKULL_TEXTURE) {
side_texture = get_texture(TEXTURE_ID_POT_SKULL);
}
break;

case HEART_CHEST_SMALL:
case HEART_CHEST_BIG:
if (POTCRATE_HEART_TEXTURE) {
side_texture = get_texture(TEXTURE_ID_POT_SIDE_HEART);
top_texture = get_texture(TEXTURE_ID_POT_TOP_HEART);
}
break;

default:
break;
}
}

// push custom dlist (that sets the texture) to segment 09
Expand Down
24 changes: 24 additions & 0 deletions ASM/src/config.asm
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,30 @@ SHUFFLE_OCARINA_BUTTONS:
.byte 0x00
EPONAS_SONG_NOTES:
.halfword 0x0000
CHEST_GOLD_TEXTURE:
.byte 0x01
CHEST_GILDED_TEXTURE:
.byte 0x01
CHEST_SILVER_TEXTURE:
.byte 0x01
CHEST_SKULL_TEXTURE:
.byte 0x01
CHEST_HEART_TEXTURE:
.byte 0x01
POTCRATE_GOLD_TEXTURE:
.byte 0x01
POTCRATE_GILDED_TEXTURE:
.byte 0x01
POTCRATE_SILVER_TEXTURE:
.byte 0x01
POTCRATE_SKULL_TEXTURE:
.byte 0x01
POTCRATE_HEART_TEXTURE:
.byte 0x01
SOA_UNLOCKS_CHEST_TEXTURE:
.byte 0x00
SOA_UNLOCKS_POTCRATE_TEXTURE:
.byte 0x00
.align 4

; These configuration values are given fixed addresses to aid auto-trackers.
Expand Down
Loading

0 comments on commit 22540c4

Please sign in to comment.