Updating buttons and dialogue

This commit is contained in:
Remnants of Forgotten Disney
2024-03-29 11:55:54 -05:00
parent 6bef2b58f2
commit de40daa51e
15 changed files with 462 additions and 818 deletions

View File

@@ -4,6 +4,8 @@
#include <cstring>
#include "sprite_data.h"
#define SPRITE_CHAR_BLOCK 4
OBJ_ATTR obj_buffer[128];
OBJ_AFFINE *obj_aff_buffer = (OBJ_AFFINE *)obj_buffer;
@@ -58,425 +60,73 @@ void load_textbox_background()
// SPRITES
#include "metr.h"
OBJ_ATTR *testroid = &obj_buffer[0];
void load_testroid()
int num_sprites = 0;
OBJ_ATTR *testroid = &obj_buffer[num_sprites++];
OBJ_ATTR *prof = &obj_buffer[num_sprites++];
OBJ_ATTR *btn_t_l = &obj_buffer[num_sprites++];
OBJ_ATTR *btn_t_r = &obj_buffer[num_sprites++];
OBJ_ATTR *btn_p_l = &obj_buffer[num_sprites++];
OBJ_ATTR *btn_p_r = &obj_buffer[num_sprites++];
OBJ_ATTR *btn_c_l = &obj_buffer[num_sprites++];
OBJ_ATTR *btn_c_r = &obj_buffer[num_sprites++];
OBJ_ATTR *btn_d_l = &obj_buffer[num_sprites++];
OBJ_ATTR *btn_d_r = &obj_buffer[num_sprites++];
OBJ_ATTR *dex_sprites[3][6] = { // Fills the dex sprites top to bottom, left to right
{&obj_buffer[num_sprites++], &obj_buffer[num_sprites++], &obj_buffer[num_sprites++],
&obj_buffer[num_sprites++], &obj_buffer[num_sprites++], &obj_buffer[num_sprites++]},
{&obj_buffer[num_sprites++], &obj_buffer[num_sprites++], &obj_buffer[num_sprites++],
&obj_buffer[num_sprites++], &obj_buffer[num_sprites++], &obj_buffer[num_sprites++]},
{&obj_buffer[num_sprites++], &obj_buffer[num_sprites++], &obj_buffer[num_sprites++],
&obj_buffer[num_sprites++], &obj_buffer[num_sprites++], &obj_buffer[num_sprites++]}};
OBJ_ATTR *btn_lang_eng = &obj_buffer[num_sprites++];
OBJ_ATTR *btn_lang_fre = &obj_buffer[num_sprites++];
OBJ_ATTR *btn_lang_ita = &obj_buffer[num_sprites++];
OBJ_ATTR *btn_lang_ger = &obj_buffer[num_sprites++];
OBJ_ATTR *btn_lang_spa = &obj_buffer[num_sprites++];
OBJ_ATTR *btn_lang_kor = &obj_buffer[num_sprites++];
OBJ_ATTR *lang_arrow = &obj_buffer[num_sprites++];
void load_sprites()
{
memcpy(pal_obj_mem + (METR_PAL * 16), metrPal, metrPalLen);
memcpy(pal_obj_mem + (PROF_PAL * 16), profPal, profPalLen);
memcpy(pal_obj_mem + (BTN_PAL * 16), btn_t_lPal, btn_t_lPalLen);
memcpy(pal_obj_mem + (BTN_LIT_PAL * 16), btn_t_rPal, btn_t_rPalLen);
memcpy(&tile_mem[4][0], metrTiles, metrTilesLen);
memcpy(pal_obj_mem, metrPal, metrPalLen);
int x = 0, y = 0;
u32 tid = 0, pb = 0; // tile id, pal-bank
obj_set_attr(testroid,
ATTR0_SQUARE,
ATTR1_SIZE_64x64,
ATTR2_PALBANK(pb) | tid);
obj_set_pos(testroid, x, y);
obj_hide(testroid);
// obj_unhide(testroid, 0);
}
#include "prof.h"
OBJ_ATTR *prof = &obj_buffer[1];
void load_professor()
{
memcpy(&tile_mem[4][64], profTiles, profTilesLen);
memcpy(pal_obj_mem + 16, profPal, profPalLen);
int x = 96, y = 56;
u32 tid = 64, pb = 1; // tile id, pal-bank
obj_set_attr(prof,
ATTR0_SQUARE,
ATTR1_SIZE_64x64,
ATTR2_PALBANK(pb) | tid | ATTR2_PRIO(2));
obj_set_pos(prof, x, y);
obj_hide(prof);
//obj_unhide(prof, 0);
}
#include "btn_t_l.h"
OBJ_ATTR *btn_t_l = &obj_buffer[2];
void load_btn_t_l()
{
memcpy(&tile_mem[4][128], btn_t_lTiles, btn_t_lTilesLen);
memcpy(pal_obj_mem + 32, btn_t_lPal, btn_t_lPalLen);
int x = 0, y = 0;
u32 tid = 128, pb = 2; // tile id, pal-bank
obj_set_attr(btn_t_l,
ATTR0_WIDE,
ATTR1_SIZE_64x32,
ATTR2_PALBANK(pb) | tid | ATTR2_PRIO(1));
obj_set_pos(btn_t_l, x, y);
obj_hide(btn_t_l);
// obj_unhide(btn_t_l, 0);
}
#include "btn_t_r.h"
OBJ_ATTR *btn_t_r = &obj_buffer[3];
void load_btn_t_r()
{
memcpy(&tile_mem[4][160], btn_t_rTiles, btn_t_rTilesLen);
memcpy(pal_obj_mem + 48, btn_t_rPal, btn_t_rPalLen);
int x = 0, y = 0;
u32 tid = 160, pb = 2; // tile id, pal-bank
obj_set_attr(btn_t_r,
ATTR0_WIDE,
ATTR1_SIZE_64x32,
ATTR2_PALBANK(pb) | tid | ATTR2_PRIO(1));
obj_set_pos(btn_t_r, x, y);
obj_hide(btn_t_r);
// obj_unhide(btn_t_r, 0);
}
#include "btn_p_l.h"
OBJ_ATTR *btn_p_l = &obj_buffer[4];
void load_btn_p_l()
{
memcpy(&tile_mem[4][192], btn_p_lTiles, btn_p_lTilesLen);
// memcpy(pal_obj_mem + 32, btn_p_lPal, btn_p_lPalLen);
int x = 0, y = 0;
u32 tid = 192, pb = 2; // tile id, pal-bank
obj_set_attr(btn_p_l,
ATTR0_WIDE,
ATTR1_SIZE_64x32,
ATTR2_PALBANK(pb) | tid | ATTR2_PRIO(1));
obj_set_pos(btn_p_l, x, y);
obj_hide(btn_p_l);
// obj_unhide(btn_p_l, 0);
}
#include "btn_p_r.h"
OBJ_ATTR *btn_p_r = &obj_buffer[5];
void load_btn_p_r()
{
memcpy(&tile_mem[4][224], btn_p_rTiles, btn_p_rTilesLen);
// memcpy(pal_obj_mem + 48, btn_p_rPal, btn_p_rPalLen);
int x = 0, y = 0;
u32 tid = 224, pb = 2; // tile id, pal-bank
obj_set_attr(btn_p_r,
ATTR0_WIDE,
ATTR1_SIZE_64x32,
ATTR2_PALBANK(pb) | tid | ATTR2_PRIO(1));
obj_set_pos(btn_p_r, x, y);
obj_hide(btn_p_r);
// obj_unhide(btn_p_r, 0);
}
#include "btn_c_l.h"
OBJ_ATTR *btn_c_l = &obj_buffer[6];
void load_btn_c_l()
{
memcpy(&tile_mem[4][256], btn_c_lTiles, btn_c_lTilesLen);
// memcpy(pal_obj_mem + 32, btn_c_lPal, btn_c_lPalLen);
int x = 0, y = 0;
u32 tid = 256, pb = 2; // tile id, pal-bank
obj_set_attr(btn_c_l,
ATTR0_WIDE,
ATTR1_SIZE_64x32,
ATTR2_PALBANK(pb) | tid | ATTR2_PRIO(1));
obj_set_pos(btn_c_l, x, y);
obj_hide(btn_c_l);
// obj_unhide(btn_c_l, 0);
}
#include "btn_c_r.h"
OBJ_ATTR *btn_c_r = &obj_buffer[7];
void load_btn_c_r()
{
memcpy(&tile_mem[4][288], btn_c_rTiles, btn_c_rTilesLen);
// memcpy(pal_obj_mem + 48, btn_c_rPal, btn_c_rPalLen);
int x = 0, y = 0;
u32 tid = 288, pb = 2; // tile id, pal-bank
obj_set_attr(btn_c_r,
ATTR0_WIDE,
ATTR1_SIZE_64x32,
ATTR2_PALBANK(pb) | tid | ATTR2_PRIO(1));
obj_set_pos(btn_c_r, x, y);
obj_hide(btn_c_r);
// obj_unhide(btn_c_r, 0);
}
#include "dex_l.h"
OBJ_ATTR *dex_l[6] = {
&obj_buffer[8],
&obj_buffer[11],
&obj_buffer[14],
&obj_buffer[17],
&obj_buffer[20],
&obj_buffer[23]};
void load_dex_l()
{
memcpy(&tile_mem[4][320], dex_lTiles, dex_lTilesLen);
// memcpy(pal_obj_mem + 48, dex_lPal, dex_lPalLen);
int x = 0, y = 0;
u32 tid = 320, pb = 2; // tile id, pal-bank
for (int i = 0; i < 6; i++)
u32 curr_tile_id = 0;
load_sprite(testroid, metrTiles, metrTilesLen, curr_tile_id, METR_PAL, ATTR0_SQUARE, ATTR1_SIZE_64x64, 0);
load_sprite(prof, profTiles, profTilesLen, curr_tile_id, PROF_PAL, ATTR0_SQUARE, ATTR1_SIZE_64x64, 2);
load_sprite(btn_t_l, btn_t_lTiles, btn_t_lTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1);
load_sprite(btn_t_r, btn_t_rTiles, btn_t_rTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1);
load_sprite(btn_p_l, btn_p_lTiles, btn_p_lTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1);
load_sprite(btn_p_r, btn_p_rTiles, btn_p_rTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1);
load_sprite(btn_c_l, btn_c_lTiles, btn_c_lTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1);
load_sprite(btn_c_r, btn_c_rTiles, btn_c_rTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1);
load_sprite(btn_d_l, btn_d_lTiles, btn_d_lTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1);
load_sprite(btn_d_r, btn_d_rTiles, btn_d_rTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1);
for (int col = 0; col < 6; col++)
{
obj_set_attr(dex_l[i],
ATTR0_WIDE,
ATTR1_SIZE_64x32,
ATTR2_PALBANK(pb) | tid | ATTR2_PRIO(2));
obj_set_pos(dex_l[i], x, y);
obj_hide(dex_l[i]);
// obj_unhide(dex_l, 0);
load_sprite(dex_sprites[DEX_SPRITE_LEFT][col], dex_lTiles, dex_lTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 2);
load_sprite(dex_sprites[DEX_SPRITE_MID][col], dex_mTiles, dex_mTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 2);
load_sprite(dex_sprites[DEX_SPRITE_RIGHT][col], dex_rTiles, dex_rTilesLen, curr_tile_id, BTN_PAL, ATTR0_TALL, ATTR1_SIZE_16x32, 2);
}
load_sprite(btn_lang_eng, btn_lang_engTiles, btn_lang_engTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1);
load_sprite(btn_lang_fre, btn_lang_freTiles, btn_lang_freTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1);
load_sprite(btn_lang_ita, btn_lang_itaTiles, btn_lang_itaTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1);
load_sprite(btn_lang_ger, btn_lang_gerTiles, btn_lang_gerTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1);
load_sprite(btn_lang_spa, btn_lang_spaTiles, btn_lang_spaTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1);
load_sprite(btn_lang_kor, btn_lang_korTiles, btn_lang_korTilesLen, curr_tile_id, BTN_PAL, ATTR0_WIDE, ATTR1_SIZE_64x32, 1);
load_sprite(lang_arrow, lang_arrowTiles, lang_arrowTilesLen, curr_tile_id, BTN_PAL, ATTR0_SQUARE, ATTR1_SIZE_8x8, 1);
}
#include "dex_m.h"
OBJ_ATTR *dex_m[6] = {
&obj_buffer[9],
&obj_buffer[12],
&obj_buffer[15],
&obj_buffer[18],
&obj_buffer[21],
&obj_buffer[24]};
void load_dex_m()
void load_sprite(OBJ_ATTR *sprite, const unsigned int objTiles[], int objTilesLen,
u32 &tile_id, u32 pal_bank, int attr0, int attr1, u32 priority)
{
memcpy(&tile_mem[4][352], dex_mTiles, dex_mTilesLen);
// memcpy(pal_obj_mem + 48, dex_mPal, dex_mPalLen);
int x = 0, y = 0;
u32 tid = 352, pb = 2; // tile id, pal-bank
for (int i = 0; i < 6; i++)
{
obj_set_attr(dex_m[i],
ATTR0_WIDE,
ATTR1_SIZE_64x32,
ATTR2_PALBANK(pb) | tid | ATTR2_PRIO(2));
obj_set_pos(dex_m[i], x, y);
obj_hide(dex_m[i]);
// obj_unhide(dex_m, 0);
}
}
#include "dex_r.h"
OBJ_ATTR *dex_r[6] = {
&obj_buffer[10],
&obj_buffer[13],
&obj_buffer[16],
&obj_buffer[19],
&obj_buffer[22],
&obj_buffer[25]};
void load_dex_r()
{
memcpy(&tile_mem[4][384], dex_rTiles, dex_rTilesLen);
// memcpy(pal_obj_mem + 48, dex_rPal, dex_rPalLen);
int x = 0, y = 0;
u32 tid = 384, pb = 2; // tile id, pal-bank
for (int i = 0; i < 6; i++)
{
obj_set_attr(dex_r[i],
ATTR0_TALL,
ATTR1_SIZE_16x32,
ATTR2_PALBANK(pb) | tid | ATTR2_PRIO(2));
obj_set_pos(dex_r[i], x, y);
obj_hide(dex_r[i]);
// obj_unhide(dex_r, 0);
}
}
#include "btn_d_l.h"
OBJ_ATTR *btn_d_l = &obj_buffer[26];
void load_btn_d_l()
{
memcpy(&tile_mem[4][416], btn_d_lTiles, btn_d_lTilesLen);
memcpy(pal_obj_mem + 32, btn_d_lPal, btn_d_lPalLen);
int x = 0, y = 0;
u32 tid = 416, pb = 2; // tile id, pal-bank
obj_set_attr(btn_d_l,
ATTR0_WIDE,
ATTR1_SIZE_64x32,
ATTR2_PALBANK(pb) | tid | ATTR2_PRIO(1));
obj_set_pos(btn_d_l, x, y);
obj_hide(btn_d_l);
// obj_unhide(btn_d_l, 0);
}
#include "btn_d_r.h"
OBJ_ATTR *btn_d_r = &obj_buffer[27];
void load_btn_d_r()
{
memcpy(&tile_mem[4][448], btn_d_rTiles, btn_d_rTilesLen);
//memcpy(pal_obj_mem + 48, btn_d_rPal, btn_d_rPalLen);
int x = 0, y = 0;
u32 tid = 448, pb = 2; // tile id, pal-bank
obj_set_attr(btn_d_r,
ATTR0_WIDE,
ATTR1_SIZE_64x32,
ATTR2_PALBANK(pb) | tid | ATTR2_PRIO(1));
obj_set_pos(btn_d_r, x, y);
obj_hide(btn_d_r);
// obj_unhide(btn_d_r, 0);
}
#include "btn_lang_eng.h"
OBJ_ATTR *btn_lang_eng = &obj_buffer[28];
void load_btn_lang_eng()
{
memcpy(&tile_mem[4][480], btn_lang_engTiles, btn_lang_engTilesLen);
//memcpy(pal_obj_mem + 48, btn_lang_engPal, btn_lang_engPalLen);
int x = 0, y = 0;
u32 tid = 480, pb = 2; // tile id, pal-bank
obj_set_attr(btn_lang_eng,
ATTR0_WIDE,
ATTR1_SIZE_64x32,
ATTR2_PALBANK(pb) | tid | ATTR2_PRIO(1));
obj_set_pos(btn_lang_eng, x, y);
obj_hide(btn_lang_eng);
// obj_unhide(btn_lang_eng, 0);
}
#include "btn_lang_fre.h"
OBJ_ATTR *btn_lang_fre = &obj_buffer[29];
void load_btn_lang_fre()
{
memcpy(&tile_mem[4][512], btn_lang_freTiles, btn_lang_freTilesLen);
//memcpy(pal_obj_mem + 48, btn_lang_frePal, btn_lang_frePalLen);
int x = 0, y = 0;
u32 tid = 512, pb = 2; // tile id, pal-bank
obj_set_attr(btn_lang_fre,
ATTR0_WIDE,
ATTR1_SIZE_64x32,
ATTR2_PALBANK(pb) | tid | ATTR2_PRIO(1));
obj_set_pos(btn_lang_fre, x, y);
obj_hide(btn_lang_fre);
// obj_unhide(btn_lang_fre, 0);
}
#include "btn_lang_ita.h"
OBJ_ATTR *btn_lang_ita = &obj_buffer[30];
void load_btn_lang_ita()
{
memcpy(&tile_mem[4][544], btn_lang_itaTiles, btn_lang_itaTilesLen);
//memcpy(pal_obj_mem + 48, btn_lang_itaPal, btn_lang_itaPalLen);
int x = 0, y = 0;
u32 tid = 544, pb = 2; // tile id, pal-bank
obj_set_attr(btn_lang_ita,
ATTR0_WIDE,
ATTR1_SIZE_64x32,
ATTR2_PALBANK(pb) | tid | ATTR2_PRIO(1));
obj_set_pos(btn_lang_ita, x, y);
obj_hide(btn_lang_ita);
// obj_unhide(btn_lang_ita, 0);
}
#include "btn_lang_ger.h"
OBJ_ATTR *btn_lang_ger = &obj_buffer[31];
void load_btn_lang_ger()
{
memcpy(&tile_mem[4][576], btn_lang_gerTiles, btn_lang_gerTilesLen);
//memcpy(pal_obj_mem + 48, btn_lang_gerPal, btn_lang_gerPalLen);
int x = 0, y = 0;
u32 tid = 576, pb = 2; // tile id, pal-bank
obj_set_attr(btn_lang_ger,
ATTR0_WIDE,
ATTR1_SIZE_64x32,
ATTR2_PALBANK(pb) | tid | ATTR2_PRIO(1));
obj_set_pos(btn_lang_ger, x, y);
obj_hide(btn_lang_ger);
// obj_unhide(btn_lang_ger, 0);
}
#include "btn_lang_spa.h"
OBJ_ATTR *btn_lang_spa = &obj_buffer[32];
void load_btn_lang_spa()
{
memcpy(&tile_mem[4][608], btn_lang_spaTiles, btn_lang_spaTilesLen);
//memcpy(pal_obj_mem + 48, btn_lang_spaPal, btn_lang_spaPalLen);
int x = 0, y = 0;
u32 tid = 608, pb = 2; // tile id, pal-bank
obj_set_attr(btn_lang_spa,
ATTR0_WIDE,
ATTR1_SIZE_64x32,
ATTR2_PALBANK(pb) | tid | ATTR2_PRIO(1));
obj_set_pos(btn_lang_spa, x, y);
obj_hide(btn_lang_spa);
// obj_unhide(btn_lang_spa, 0);
}
#include "btn_lang_kor.h"
OBJ_ATTR *btn_lang_kor = &obj_buffer[33];
void load_btn_lang_kor()
{
memcpy(&tile_mem[4][640], btn_lang_korTiles, btn_lang_korTilesLen);
//memcpy(pal_obj_mem + 48, btn_lang_korPal, btn_lang_korPalLen);
int x = 0, y = 0;
u32 tid = 640, pb = 2; // tile id, pal-bank
obj_set_attr(btn_lang_kor,
ATTR0_WIDE,
ATTR1_SIZE_64x32,
ATTR2_PALBANK(pb) | tid | ATTR2_PRIO(1));
obj_set_pos(btn_lang_kor, x, y);
obj_hide(btn_lang_kor);
// obj_unhide(btn_lang_kor, 0);
}
#include "lang_arrow.h"
OBJ_ATTR *lang_arrow = &obj_buffer[34];
void load_lang_arrow()
{
memcpy(&tile_mem[4][672], lang_arrowTiles, lang_arrowTilesLen);
//memcpy(pal_obj_mem + 48, lang_arrowPal, lang_arrowPalLen);
int x = 0, y = 0;
u32 tid = 672, pb = 2; // tile id, pal-bank
obj_set_attr(lang_arrow,
ATTR0_SQUARE,
ATTR1_SIZE_8x8,
ATTR2_PALBANK(pb) | tid | ATTR2_PRIO(1));
obj_set_pos(lang_arrow, x, y);
obj_hide(lang_arrow);
// obj_unhide(lang_arrow, 0);
}
memcpy(&tile_mem[SPRITE_CHAR_BLOCK][tile_id], objTiles, objTilesLen);
obj_set_attr(sprite, attr0, attr1, ATTR2_PALBANK(pal_bank) | tile_id | ATTR2_PRIO(priority));
tile_id += objTilesLen / 32;
obj_hide(sprite);
};