examples: add happy_mask_salesman
1
Makefile
@ -23,6 +23,7 @@ cube.elf: $(DEFAULT) arm9/cube.bin.o
|
|||||||
icosphere.elf: $(DEFAULT) arm9/icosphere.bin.o
|
icosphere.elf: $(DEFAULT) arm9/icosphere.bin.o
|
||||||
majora.elf: $(DEFAULT) arm9/majora.bin.o
|
majora.elf: $(DEFAULT) arm9/majora.bin.o
|
||||||
ulala.elf: $(DEFAULT) arm9/ulala.bin.o
|
ulala.elf: $(DEFAULT) arm9/ulala.bin.o
|
||||||
|
happy_mask_salesman.elf: $(DEFAULT) arm9/happy_mask_salesman.bin.o
|
||||||
|
|
||||||
TARGET = arm-none-eabi-
|
TARGET = arm-none-eabi-
|
||||||
AARCH = -march=armv4t -mlittle-endian
|
AARCH = -march=armv4t -mlittle-endian
|
||||||
|
@ -64,6 +64,39 @@ examples/ulala.c: $(patsubst %.o,%.h,$(ULALA_RES))
|
|||||||
ulala.elf: start.o examples/ulala.o ../math/cos_table_fp12.o ../math/cos.o $(ULALA_RES)
|
ulala.elf: start.o examples/ulala.o ../math/cos_table_fp12.o ../math/cos.o $(ULALA_RES)
|
||||||
|
|
||||||
|
|
||||||
|
HAPPY_MASK_SALESMAN_RES = \
|
||||||
|
../model/happy_mask_salesman/mask_00_8A00.data.o \
|
||||||
|
../model/happy_mask_salesman/mask_01_9200.data.o \
|
||||||
|
../model/happy_mask_salesman/mask_02_9A00.data.o \
|
||||||
|
../model/happy_mask_salesman/mask_03_A200.data.o \
|
||||||
|
../model/happy_mask_salesman/mask_04_AA00.data.o \
|
||||||
|
../model/happy_mask_salesman/mask_05_B200.data.o \
|
||||||
|
../model/happy_mask_salesman/mask_06_BA00.data.o \
|
||||||
|
../model/happy_mask_salesman/mask_07_C200.data.o \
|
||||||
|
../model/happy_mask_salesman/mask_08_CA00.data.o \
|
||||||
|
../model/happy_mask_salesman/mask_09_D200.data.o \
|
||||||
|
../model/happy_mask_salesman/maskmaster_00_0.data.o \
|
||||||
|
../model/happy_mask_salesman/maskmaster_01_4A00.data.o \
|
||||||
|
../model/happy_mask_salesman/maskmaster_e00_6A00.data.o \
|
||||||
|
../model/happy_mask_salesman/maskmaster_m00_7A00.data.o \
|
||||||
|
../model/happy_mask_salesman/mask_00_8A00.data.pal.o \
|
||||||
|
../model/happy_mask_salesman/mask_01_9200.data.pal.o \
|
||||||
|
../model/happy_mask_salesman/mask_02_9A00.data.pal.o \
|
||||||
|
../model/happy_mask_salesman/mask_03_A200.data.pal.o \
|
||||||
|
../model/happy_mask_salesman/mask_04_AA00.data.pal.o \
|
||||||
|
../model/happy_mask_salesman/mask_05_B200.data.pal.o \
|
||||||
|
../model/happy_mask_salesman/mask_06_BA00.data.pal.o \
|
||||||
|
../model/happy_mask_salesman/mask_07_C200.data.pal.o \
|
||||||
|
../model/happy_mask_salesman/mask_08_CA00.data.pal.o \
|
||||||
|
../model/happy_mask_salesman/mask_09_D200.data.pal.o \
|
||||||
|
../model/happy_mask_salesman/maskmaster_00_0.data.pal.o \
|
||||||
|
../model/happy_mask_salesman/maskmaster_01_4A00.data.pal.o \
|
||||||
|
../model/happy_mask_salesman/maskmaster_e00_6A00.data.pal.o \
|
||||||
|
../model/happy_mask_salesman/maskmaster_m00_7A00.data.pal.o
|
||||||
|
|
||||||
|
examples/happy_mask_salesman.c: $(patsubst %.o,%.h,$(HAPPY_MASK_SALESMAN_RES))
|
||||||
|
happy_mask_salesman.elf: start.o examples/happy_mask_salesman.o ../math/cos_table_fp12.o ../math/cos.o $(HAPPY_MASK_SALESMAN_RES)
|
||||||
|
|
||||||
CFLAGS += -I../include -I../
|
CFLAGS += -I../include -I../
|
||||||
|
|
||||||
include arm9.mk
|
include arm9.mk
|
||||||
|
490
arm9/examples/happy_mask_salesman.c
Normal file
@ -0,0 +1,490 @@
|
|||||||
|
#include "io_registers.h"
|
||||||
|
#include "bits.h"
|
||||||
|
|
||||||
|
#include "math/math.h"
|
||||||
|
|
||||||
|
#include "model/happy_mask_salesman/mask_00_8A00.data.h"
|
||||||
|
#include "model/happy_mask_salesman/mask_01_9200.data.h"
|
||||||
|
#include "model/happy_mask_salesman/mask_02_9A00.data.h"
|
||||||
|
#include "model/happy_mask_salesman/mask_03_A200.data.h"
|
||||||
|
#include "model/happy_mask_salesman/mask_04_AA00.data.h"
|
||||||
|
#include "model/happy_mask_salesman/mask_05_B200.data.h"
|
||||||
|
#include "model/happy_mask_salesman/mask_06_BA00.data.h"
|
||||||
|
#include "model/happy_mask_salesman/mask_07_C200.data.h"
|
||||||
|
#include "model/happy_mask_salesman/mask_08_CA00.data.h"
|
||||||
|
#include "model/happy_mask_salesman/mask_09_D200.data.h"
|
||||||
|
#include "model/happy_mask_salesman/maskmaster_00_0.data.h"
|
||||||
|
#include "model/happy_mask_salesman/maskmaster_01_4A00.data.h"
|
||||||
|
#include "model/happy_mask_salesman/maskmaster_e00_6A00.data.h"
|
||||||
|
#include "model/happy_mask_salesman/maskmaster_m00_7A00.data.h"
|
||||||
|
|
||||||
|
#include "model/happy_mask_salesman/mask_00_8A00.data.pal.h"
|
||||||
|
#include "model/happy_mask_salesman/mask_01_9200.data.pal.h"
|
||||||
|
#include "model/happy_mask_salesman/mask_02_9A00.data.pal.h"
|
||||||
|
#include "model/happy_mask_salesman/mask_03_A200.data.pal.h"
|
||||||
|
#include "model/happy_mask_salesman/mask_04_AA00.data.pal.h"
|
||||||
|
#include "model/happy_mask_salesman/mask_05_B200.data.pal.h"
|
||||||
|
#include "model/happy_mask_salesman/mask_06_BA00.data.pal.h"
|
||||||
|
#include "model/happy_mask_salesman/mask_07_C200.data.pal.h"
|
||||||
|
#include "model/happy_mask_salesman/mask_08_CA00.data.pal.h"
|
||||||
|
#include "model/happy_mask_salesman/mask_09_D200.data.pal.h"
|
||||||
|
#include "model/happy_mask_salesman/maskmaster_00_0.data.pal.h"
|
||||||
|
#include "model/happy_mask_salesman/maskmaster_01_4A00.data.pal.h"
|
||||||
|
#include "model/happy_mask_salesman/maskmaster_e00_6A00.data.pal.h"
|
||||||
|
#include "model/happy_mask_salesman/maskmaster_m00_7A00.data.pal.h"
|
||||||
|
|
||||||
|
#include "model/happy_mask_salesman/material.h"
|
||||||
|
#include "model/happy_mask_salesman/model.h"
|
||||||
|
|
||||||
|
void copy_palettes()
|
||||||
|
{
|
||||||
|
volatile uint16_t * vram_f = (volatile uint16_t *)(0x06890000);
|
||||||
|
|
||||||
|
int palettes = (sizeof (material)) / (sizeof (material[0]));
|
||||||
|
for (int i = 0; i < palettes; i++) {
|
||||||
|
int colors = material[i].palette.size / 2;
|
||||||
|
uint16_t * pal = (uint16_t *)material[i].palette.start;
|
||||||
|
int offset = material[i].palette.vram_offset;
|
||||||
|
|
||||||
|
for (int c = 0; c < colors; c++) {
|
||||||
|
vram_f[c + offset / 2] = pal[c];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t teximage_param__t_size(int height)
|
||||||
|
{
|
||||||
|
switch (height) {
|
||||||
|
default:
|
||||||
|
case 8: return TEXIMAGE_PARAM__t_size__8_texels;
|
||||||
|
case 16: return TEXIMAGE_PARAM__t_size__16_texels;
|
||||||
|
case 32: return TEXIMAGE_PARAM__t_size__32_texels;
|
||||||
|
case 64: return TEXIMAGE_PARAM__t_size__64_texels;
|
||||||
|
case 128: return TEXIMAGE_PARAM__t_size__128_texels;
|
||||||
|
case 256: return TEXIMAGE_PARAM__t_size__256_texels;
|
||||||
|
case 512: return TEXIMAGE_PARAM__t_size__512_texels;
|
||||||
|
case 1024: return TEXIMAGE_PARAM__t_size__1024_texels;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t teximage_param__s_size(int width)
|
||||||
|
{
|
||||||
|
switch (width) {
|
||||||
|
default:
|
||||||
|
case 8: return TEXIMAGE_PARAM__s_size__8_texels;
|
||||||
|
case 16: return TEXIMAGE_PARAM__s_size__16_texels;
|
||||||
|
case 32: return TEXIMAGE_PARAM__s_size__32_texels;
|
||||||
|
case 64: return TEXIMAGE_PARAM__s_size__64_texels;
|
||||||
|
case 128: return TEXIMAGE_PARAM__s_size__128_texels;
|
||||||
|
case 256: return TEXIMAGE_PARAM__s_size__256_texels;
|
||||||
|
case 512: return TEXIMAGE_PARAM__s_size__512_texels;
|
||||||
|
case 1024: return TEXIMAGE_PARAM__s_size__1024_texels;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t teximage_param__color_palette(int palette_size)
|
||||||
|
{
|
||||||
|
switch (palette_size) {
|
||||||
|
default:
|
||||||
|
case 4: return TEXIMAGE_PARAM__texture_format__4_color_palette;
|
||||||
|
case 16: return TEXIMAGE_PARAM__texture_format__16_color_palette;
|
||||||
|
case 256: return TEXIMAGE_PARAM__texture_format__256_color_palette;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void copy_pixels()
|
||||||
|
{
|
||||||
|
volatile uint16_t * vram_a = (volatile uint16_t *)(0x06800000);
|
||||||
|
|
||||||
|
int pixels = (sizeof (material)) / (sizeof (material[0]));
|
||||||
|
for (int i = 0; i < pixels; i++) {
|
||||||
|
int size = material[i].pixel.size;
|
||||||
|
uint16_t * pixel = (uint16_t *)material[i].pixel.start;
|
||||||
|
int offset = material[i].pixel.vram_offset;
|
||||||
|
|
||||||
|
for (int t = 0; t < size / 2; t++) {
|
||||||
|
vram_a[offset / 2 + t] = pixel[t];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int u_to_s(int n, int dimension)
|
||||||
|
{
|
||||||
|
return (n * dimension) >> 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
int v_to_t(int n, int dimension)
|
||||||
|
{
|
||||||
|
return ((((1 << 15) - n) * dimension) >> 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
void copy_texture_data()
|
||||||
|
{
|
||||||
|
// memory bank allocation
|
||||||
|
// use VRAM-A for texture pixel data
|
||||||
|
// use VRAM-E for texture palette data
|
||||||
|
|
||||||
|
// temporarily map VRAM-A (128KB) to the arm9 address space:
|
||||||
|
// 0x06800000 - 0x0681FFFF
|
||||||
|
io_registers.a.VRAMCNT = 0
|
||||||
|
| VRAMCNT__vram_a__enable
|
||||||
|
| VRAMCNT__vram_a__mst(0b00); // arm9
|
||||||
|
|
||||||
|
// temporarily map VRAM-F (16KB) to the arm9 address space:
|
||||||
|
// 0x06890000 - 0x06893FFF
|
||||||
|
io_registers.a.WVRAMCNT = 0
|
||||||
|
| WVRAMCNT__vram_f__enable
|
||||||
|
| WVRAMCNT__vram_f__mst(0b000); // arm9
|
||||||
|
|
||||||
|
// at this point, VRAM-A/VRAM-E are not accessible by the 3d engine.
|
||||||
|
|
||||||
|
copy_palettes();
|
||||||
|
copy_pixels();
|
||||||
|
|
||||||
|
// map VRAM-A (128KB) to the 3d-engine "texture image slot 0":
|
||||||
|
// 0x00000 - 0x1ffff (3d engine texture image address space)
|
||||||
|
io_registers.a.VRAMCNT = 0
|
||||||
|
| VRAMCNT__vram_a__enable
|
||||||
|
| VRAMCNT__vram_a__ofs(0) // slot 0
|
||||||
|
| VRAMCNT__vram_a__mst(0b11); // texture image
|
||||||
|
|
||||||
|
// map VRAM-F (16KB) to the 3d-engine "texture palette slot 0":
|
||||||
|
// 0x0000 - 0x3fff (3d engine texture palette address space)
|
||||||
|
io_registers.a.WVRAMCNT = 0
|
||||||
|
| WVRAMCNT__vram_f__enable
|
||||||
|
| WVRAMCNT__vram_f__ofs(0) // slot 0
|
||||||
|
| WVRAMCNT__vram_f__mst(0b011); // texture palette
|
||||||
|
}
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
// power control
|
||||||
|
io_registers.a.POWCNT = 0
|
||||||
|
| POWCNT__lcd_output_destination__a_to_upper__b_to_lower
|
||||||
|
| POWCNT__geometry_engine__enable
|
||||||
|
| POWCNT__rendering_engine__enable
|
||||||
|
| POWCNT__lcd__enable;
|
||||||
|
|
||||||
|
// enable bg0 and 3d graphics
|
||||||
|
io_registers.a.DISPCNT = 0
|
||||||
|
| DISPCNT__display_mode__graphics_display
|
||||||
|
| DISPCNT__bg0__enable
|
||||||
|
| DISPCNT__display_selection_for_bg0__3d_graphics
|
||||||
|
;
|
||||||
|
|
||||||
|
// disable all 3d effects
|
||||||
|
io_registers.a.DISP3DCNT = 0
|
||||||
|
| DISP3DCNT__clear_image__disable
|
||||||
|
| DISP3DCNT__fog_master__disable
|
||||||
|
| DISP3DCNT__edge_marking__disable
|
||||||
|
| DISP3DCNT__anti_aliasing__disable
|
||||||
|
| DISP3DCNT__alpha_blending__disable
|
||||||
|
| DISP3DCNT__alpha_test__disable
|
||||||
|
| DISP3DCNT__texture_mapping__enable;
|
||||||
|
|
||||||
|
copy_texture_data();
|
||||||
|
|
||||||
|
// clear matrix stack status
|
||||||
|
io_registers.a.GXSTAT |= GXSTAT__matrix_stack_status__overflow_or_underflow;
|
||||||
|
|
||||||
|
// load identity matrices
|
||||||
|
io_registers.a.MTX_MODE = MTX_MODE__matrix_mode__projection;
|
||||||
|
io_registers.a.MTX_IDENTITY = 0;
|
||||||
|
|
||||||
|
// load a symmetric perspective matrix, with aspect ratio correction
|
||||||
|
io_registers.a.MTX_LOAD_4X4 = (192 << 12) / 256;
|
||||||
|
io_registers.a.MTX_LOAD_4X4 = 0;
|
||||||
|
io_registers.a.MTX_LOAD_4X4 = 0;
|
||||||
|
io_registers.a.MTX_LOAD_4X4 = 0;
|
||||||
|
|
||||||
|
io_registers.a.MTX_LOAD_4X4 = 0;
|
||||||
|
io_registers.a.MTX_LOAD_4X4 = 1 << 12;
|
||||||
|
io_registers.a.MTX_LOAD_4X4 = 0;
|
||||||
|
io_registers.a.MTX_LOAD_4X4 = 0;
|
||||||
|
|
||||||
|
io_registers.a.MTX_LOAD_4X4 = 0;
|
||||||
|
io_registers.a.MTX_LOAD_4X4 = 0;
|
||||||
|
io_registers.a.MTX_LOAD_4X4 = 0;
|
||||||
|
io_registers.a.MTX_LOAD_4X4 = -(1 << 12);
|
||||||
|
|
||||||
|
io_registers.a.MTX_LOAD_4X4 = 0;
|
||||||
|
io_registers.a.MTX_LOAD_4X4 = 0;
|
||||||
|
io_registers.a.MTX_LOAD_4X4 = -(1 << 12) >> 4;
|
||||||
|
io_registers.a.MTX_LOAD_4X4 = 0;
|
||||||
|
|
||||||
|
// translate the viewpoint
|
||||||
|
io_registers.a.MTX_TRANS = 0;
|
||||||
|
io_registers.a.MTX_TRANS = (int)(-4.0 * (float)(1 << 11));
|
||||||
|
io_registers.a.MTX_TRANS = (int)(-7.0 * (float)(1 << 11));
|
||||||
|
|
||||||
|
io_registers.a.MTX_MODE = MTX_MODE__matrix_mode__position;
|
||||||
|
io_registers.a.MTX_IDENTITY = 0;
|
||||||
|
|
||||||
|
io_registers.a.MTX_MODE = MTX_MODE__matrix_mode__position_and_vector;
|
||||||
|
io_registers.a.MTX_IDENTITY = 0;
|
||||||
|
|
||||||
|
io_registers.a.MTX_MODE = MTX_MODE__matrix_mode__texture;
|
||||||
|
io_registers.a.MTX_IDENTITY = 0;
|
||||||
|
io_registers.a.MTX_MODE = MTX_MODE__matrix_mode__position_and_vector;
|
||||||
|
|
||||||
|
// set the 3d clear color to a dark red
|
||||||
|
io_registers.a.CLEAR_COLOR = 0
|
||||||
|
| CLEAR_COLOR__clear_polygon_id(31)
|
||||||
|
| CLEAR_COLOR__alpha_value(31)
|
||||||
|
| CLEAR_COLOR__blue(1)
|
||||||
|
| CLEAR_COLOR__green(1)
|
||||||
|
| CLEAR_COLOR__red(10);
|
||||||
|
|
||||||
|
// set the depth buffer clear value to the maximum value
|
||||||
|
io_registers.a.CLEAR_DEPTH = CLEAR_DEPTH__value(0x7fff);
|
||||||
|
|
||||||
|
// the 3d viewport is the entire display area
|
||||||
|
io_registers.a.VIEWPORT = 0
|
||||||
|
| VIEWPORT__y2(191)
|
||||||
|
| VIEWPORT__x2(255)
|
||||||
|
| VIEWPORT__y1(0)
|
||||||
|
| VIEWPORT__x1(0);
|
||||||
|
|
||||||
|
// normalized 45° vector
|
||||||
|
int c = 0.57735 * 512;
|
||||||
|
|
||||||
|
// lighting vectors and colors for 3 directional lights
|
||||||
|
io_registers.a.LIGHT_VECTOR = 0
|
||||||
|
| LIGHT_VECTOR__light_number(0)
|
||||||
|
| LIGHT_VECTOR__decimal_z(-c)
|
||||||
|
| LIGHT_VECTOR__decimal_y(-c)
|
||||||
|
| LIGHT_VECTOR__decimal_x(-c);
|
||||||
|
|
||||||
|
io_registers.a.LIGHT_VECTOR = 0
|
||||||
|
| LIGHT_VECTOR__light_number(1)
|
||||||
|
| LIGHT_VECTOR__decimal_z(-c)
|
||||||
|
| LIGHT_VECTOR__decimal_y(-c)
|
||||||
|
| LIGHT_VECTOR__decimal_x(c);
|
||||||
|
|
||||||
|
io_registers.a.LIGHT_VECTOR = 0
|
||||||
|
| LIGHT_VECTOR__light_number(2)
|
||||||
|
| LIGHT_VECTOR__decimal_z(-c)
|
||||||
|
| LIGHT_VECTOR__decimal_y(c)
|
||||||
|
| LIGHT_VECTOR__decimal_x(-c);
|
||||||
|
|
||||||
|
io_registers.a.LIGHT_COLOR = 0
|
||||||
|
| LIGHT_COLOR__light_number(0)
|
||||||
|
| LIGHT_COLOR__blue(31)
|
||||||
|
| LIGHT_COLOR__green(31)
|
||||||
|
| LIGHT_COLOR__red(31);
|
||||||
|
|
||||||
|
io_registers.a.LIGHT_COLOR = 0
|
||||||
|
| LIGHT_COLOR__light_number(1)
|
||||||
|
| LIGHT_COLOR__blue(31)
|
||||||
|
| LIGHT_COLOR__green(31)
|
||||||
|
| LIGHT_COLOR__red(31);
|
||||||
|
|
||||||
|
io_registers.a.LIGHT_COLOR = 0
|
||||||
|
| LIGHT_COLOR__light_number(2)
|
||||||
|
| LIGHT_COLOR__blue(31)
|
||||||
|
| LIGHT_COLOR__green(31)
|
||||||
|
| LIGHT_COLOR__red(31);
|
||||||
|
|
||||||
|
// integer degrees
|
||||||
|
int theta = 0;
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
// calculate sin/cos for 2d rotation; signed fp20.12 result
|
||||||
|
int cos = cos_fp12(theta);
|
||||||
|
int sin = sin_fp12(theta);
|
||||||
|
|
||||||
|
int cos2 = cos_fp12(-theta >> 1);
|
||||||
|
int sin2 = sin_fp12(-theta >> 1);
|
||||||
|
|
||||||
|
io_registers.a.MTX_MODE = MTX_MODE__matrix_mode__position_and_vector;
|
||||||
|
// reset position matrix
|
||||||
|
io_registers.a.MTX_IDENTITY = 0;
|
||||||
|
|
||||||
|
io_registers.a.MTX_TRANS = 0;
|
||||||
|
io_registers.a.MTX_TRANS = (int)(-1.0 * (float)(1 << 12));
|
||||||
|
io_registers.a.MTX_TRANS = (int)(0.15 * (float)(1 << 12));
|
||||||
|
|
||||||
|
|
||||||
|
// multiply by a y-axis rotation
|
||||||
|
io_registers.a.MTX_MULT_3X3 = cos2;
|
||||||
|
io_registers.a.MTX_MULT_3X3 = 0;
|
||||||
|
io_registers.a.MTX_MULT_3X3 = sin2;
|
||||||
|
|
||||||
|
io_registers.a.MTX_MULT_3X3 = 0;
|
||||||
|
io_registers.a.MTX_MULT_3X3 = 1 << 12;
|
||||||
|
io_registers.a.MTX_MULT_3X3 = 0;
|
||||||
|
|
||||||
|
io_registers.a.MTX_MULT_3X3 = -sin2;
|
||||||
|
io_registers.a.MTX_MULT_3X3 = 0;
|
||||||
|
io_registers.a.MTX_MULT_3X3 = cos2;
|
||||||
|
|
||||||
|
/*
|
||||||
|
// multiply by a z-axis rotation
|
||||||
|
io_registers.a.MTX_MULT_3X3 = cos;
|
||||||
|
io_registers.a.MTX_MULT_3X3 = -sin;
|
||||||
|
io_registers.a.MTX_MULT_3X3 = 0;
|
||||||
|
|
||||||
|
io_registers.a.MTX_MULT_3X3 = sin;
|
||||||
|
io_registers.a.MTX_MULT_3X3 = cos;
|
||||||
|
io_registers.a.MTX_MULT_3X3 = 0;
|
||||||
|
|
||||||
|
io_registers.a.MTX_MULT_3X3 = 0;
|
||||||
|
io_registers.a.MTX_MULT_3X3 = 0;
|
||||||
|
io_registers.a.MTX_MULT_3X3 = 1 << 12;
|
||||||
|
*/
|
||||||
|
|
||||||
|
// multiply by a x-axis rotation
|
||||||
|
/*
|
||||||
|
io_registers.a.MTX_MULT_3X3 = 1 << 12;
|
||||||
|
io_registers.a.MTX_MULT_3X3 = 0;
|
||||||
|
io_registers.a.MTX_MULT_3X3 = 0;
|
||||||
|
|
||||||
|
io_registers.a.MTX_MULT_3X3 = 0;
|
||||||
|
io_registers.a.MTX_MULT_3X3 = cos2;
|
||||||
|
io_registers.a.MTX_MULT_3X3 = -sin2;
|
||||||
|
|
||||||
|
io_registers.a.MTX_MULT_3X3 = 0;
|
||||||
|
io_registers.a.MTX_MULT_3X3 = sin2;
|
||||||
|
io_registers.a.MTX_MULT_3X3 = cos2;
|
||||||
|
*/
|
||||||
|
|
||||||
|
// lighting parameters
|
||||||
|
io_registers.a.DIF_AMB = 0
|
||||||
|
| DIF_AMB__ambient_blue(3)
|
||||||
|
| DIF_AMB__ambient_green(3)
|
||||||
|
| DIF_AMB__ambient_red(3)
|
||||||
|
| DIF_AMB__diffuse_blue(10)
|
||||||
|
| DIF_AMB__diffuse_green(10)
|
||||||
|
| DIF_AMB__diffuse_red(10);
|
||||||
|
|
||||||
|
io_registers.a.SPE_EMI = 0
|
||||||
|
| SPE_EMI__specular_blue(25)
|
||||||
|
| SPE_EMI__specular_green(25)
|
||||||
|
| SPE_EMI__specular_red(25);
|
||||||
|
|
||||||
|
io_registers.a.COLOR = 0
|
||||||
|
| COLOR__blue(31)
|
||||||
|
| COLOR__green(31)
|
||||||
|
| COLOR__red(31)
|
||||||
|
;
|
||||||
|
|
||||||
|
// the following polygons are fully opaque; backface culling is
|
||||||
|
// enabled
|
||||||
|
io_registers.a.POLYGON_ATTR = 0
|
||||||
|
| POLYGON_ATTR__polygon_id(0)
|
||||||
|
| POLYGON_ATTR__alpha_value(31)
|
||||||
|
| POLYGON_ATTR__render_front_surface__enable
|
||||||
|
//| POLYGON_ATTR__render_back_surface__enable
|
||||||
|
| POLYGON_ATTR__polygon_mode__modulation
|
||||||
|
| POLYGON_ATTR__light_2__enable
|
||||||
|
| POLYGON_ATTR__light_1__enable
|
||||||
|
| POLYGON_ATTR__light_0__enable;
|
||||||
|
|
||||||
|
// the following vertices are triangles
|
||||||
|
io_registers.a.BEGIN_VTXS = BEGIN_VTXS__type__triangle;
|
||||||
|
|
||||||
|
struct model * model = &happy_mask_salesman_model;
|
||||||
|
|
||||||
|
for (int object_ix = 0; object_ix < model->object_count; object_ix++) {
|
||||||
|
struct object * obj = model->object[object_ix];
|
||||||
|
const int num_triangles = obj->triangle_count;
|
||||||
|
|
||||||
|
int material_ix = obj->material;
|
||||||
|
int pixel_offset = material[material_ix].pixel.vram_offset;
|
||||||
|
int palette_offset = material[material_ix].palette.vram_offset;
|
||||||
|
int width = material[material_ix].pixel.width;
|
||||||
|
int height = material[material_ix].pixel.height;
|
||||||
|
int palette_size = material[material_ix].palette.palette_size;
|
||||||
|
|
||||||
|
int shift = palette_size == 4 ? 3 : 4;
|
||||||
|
io_registers.a.TEXPLTT_BASE = TEXPLTT_BASE__base_address(palette_offset >> shift);
|
||||||
|
io_registers.a.TEXIMAGE_PARAM = 0
|
||||||
|
| TEXIMAGE_PARAM__texture_coordinate_transformation_mode__texcoord_source
|
||||||
|
| teximage_param__color_palette(palette_size)
|
||||||
|
| TEXIMAGE_PARAM__repeat_t__repeat
|
||||||
|
| TEXIMAGE_PARAM__repeat_s__repeat
|
||||||
|
| teximage_param__t_size(height)
|
||||||
|
| teximage_param__s_size(width)
|
||||||
|
| TEXIMAGE_PARAM__texture_starting_address(pixel_offset >> 3)
|
||||||
|
;
|
||||||
|
|
||||||
|
for (int i = 0; i < num_triangles; i++) {
|
||||||
|
// "When texture mapping, the Geometry Engine works faster if you
|
||||||
|
// issue commands in the following order: TexCoord→Normal→Vertex."
|
||||||
|
struct vertex_texture * at = &model->texture[obj->triangle[i].a.texture];
|
||||||
|
io_registers.a.TEXCOORD = 0
|
||||||
|
| TEXCOORD__t_coordinate(v_to_t(at->v, height))
|
||||||
|
| TEXCOORD__s_coordinate(u_to_s(at->u, width));
|
||||||
|
|
||||||
|
struct vertex_normal * an = &model->normal[obj->triangle[i].a.normal];
|
||||||
|
io_registers.a.NORMAL = 0
|
||||||
|
| NORMAL__z_component(an->z)
|
||||||
|
| NORMAL__y_component(an->y)
|
||||||
|
| NORMAL__x_component(an->x);
|
||||||
|
|
||||||
|
struct vertex_position * a = &model->position[obj->triangle[i].a.position];
|
||||||
|
io_registers.a.VTX_16 = 0
|
||||||
|
| VTX_16__0__y_coordinate(a->y)
|
||||||
|
| VTX_16__0__x_coordinate(a->x);
|
||||||
|
io_registers.a.VTX_16 = 0
|
||||||
|
| VTX_16__1__z_coordinate(a->z);
|
||||||
|
|
||||||
|
struct vertex_texture * bt = &model->texture[obj->triangle[i].b.texture];
|
||||||
|
io_registers.a.TEXCOORD = 0
|
||||||
|
| TEXCOORD__t_coordinate(v_to_t(bt->v, height))
|
||||||
|
| TEXCOORD__s_coordinate(u_to_s(bt->u, width));
|
||||||
|
|
||||||
|
struct vertex_normal * bn = &model->normal[obj->triangle[i].b.normal];
|
||||||
|
io_registers.a.NORMAL = 0
|
||||||
|
| NORMAL__z_component(bn->z)
|
||||||
|
| NORMAL__y_component(bn->y)
|
||||||
|
| NORMAL__x_component(bn->x);
|
||||||
|
|
||||||
|
struct vertex_position * b = &model->position[obj->triangle[i].b.position];
|
||||||
|
io_registers.a.VTX_16 = 0
|
||||||
|
| VTX_16__0__y_coordinate(b->y)
|
||||||
|
| VTX_16__0__x_coordinate(b->x);
|
||||||
|
io_registers.a.VTX_16 = 0
|
||||||
|
| VTX_16__1__z_coordinate(b->z);
|
||||||
|
|
||||||
|
struct vertex_texture * ct = &model->texture[obj->triangle[i].c.texture];
|
||||||
|
io_registers.a.TEXCOORD = 0
|
||||||
|
| TEXCOORD__t_coordinate(v_to_t(ct->v, height))
|
||||||
|
| TEXCOORD__s_coordinate(u_to_s(ct->u, width));
|
||||||
|
|
||||||
|
struct vertex_normal * cn = &model->normal[obj->triangle[i].c.normal];
|
||||||
|
io_registers.a.NORMAL = 0
|
||||||
|
| NORMAL__z_component(cn->z)
|
||||||
|
| NORMAL__y_component(cn->y)
|
||||||
|
| NORMAL__x_component(cn->x);
|
||||||
|
|
||||||
|
struct vertex_position * c = &model->position[obj->triangle[i].c.position];
|
||||||
|
io_registers.a.VTX_16 = 0
|
||||||
|
| VTX_16__0__y_coordinate(c->y)
|
||||||
|
| VTX_16__0__x_coordinate(c->x);
|
||||||
|
io_registers.a.VTX_16 = 0
|
||||||
|
| VTX_16__1__z_coordinate(c->z);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// end of triangles
|
||||||
|
io_registers.a.END_VTXS = 0;
|
||||||
|
|
||||||
|
// wait for the geometry engine
|
||||||
|
while (io_registers.a.GXSTAT & GXSTAT__geometry_engine_busy);
|
||||||
|
|
||||||
|
// wait for the end of the current frame
|
||||||
|
//while (io_registers.a.VCOUNT != 262);
|
||||||
|
//while (io_registers.a.VCOUNT == 262);
|
||||||
|
|
||||||
|
// swap buffers
|
||||||
|
io_registers.a.SWAP_BUFFERS = 0;
|
||||||
|
|
||||||
|
// increment theta once per frame
|
||||||
|
theta += 1;
|
||||||
|
if (theta >= 360 * 16) {
|
||||||
|
theta = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -30,6 +30,19 @@ class FixedPoint:
|
|||||||
def to_float(fp):
|
def to_float(fp):
|
||||||
return fp.sign * fp.value / fp.point
|
return fp.sign * fp.value / fp.point
|
||||||
|
|
||||||
|
def from_float(n):
|
||||||
|
if n == 0.0:
|
||||||
|
sign = 1
|
||||||
|
value = 0
|
||||||
|
else:
|
||||||
|
sign = -1 if n < 0 else 1
|
||||||
|
value = abs(round(n * (2 ** 32)))
|
||||||
|
point = 2 ** 32
|
||||||
|
return FixedPoint(sign, value, point)
|
||||||
|
|
||||||
|
assert from_float(0.5).to_float() == 0.5
|
||||||
|
assert from_float(1.5).to_fixed_point(16, 16).value == 98304
|
||||||
|
|
||||||
def parse(s):
|
def parse(s):
|
||||||
sign = -1 if s.startswith('-') else 1
|
sign = -1 if s.startswith('-') else 1
|
||||||
s = s.removeprefix('-')
|
s = s.removeprefix('-')
|
||||||
|
@ -125,6 +125,7 @@ def group_by_type(l):
|
|||||||
faces = defaultdict(lambda: defaultdict(list))
|
faces = defaultdict(lambda: defaultdict(list))
|
||||||
materials = dict()
|
materials = dict()
|
||||||
current_mtllib = None
|
current_mtllib = None
|
||||||
|
multi_material_index = 0
|
||||||
for i in l:
|
for i in l:
|
||||||
if type(i) in {VertexPosition, VertexTexture, VertexNormal}:
|
if type(i) in {VertexPosition, VertexTexture, VertexNormal}:
|
||||||
vertices[type(i)].append(i)
|
vertices[type(i)].append(i)
|
||||||
@ -135,9 +136,15 @@ def group_by_type(l):
|
|||||||
assert current_object is not None
|
assert current_object is not None
|
||||||
assert current_mtllib is not None
|
assert current_mtllib is not None
|
||||||
i.lib = current_mtllib.name
|
i.lib = current_mtllib.name
|
||||||
assert current_object.name not in materials, (current_object.name, materials)
|
if current_object.name in materials:
|
||||||
|
if multi_material_index != 0:
|
||||||
|
current_object.name = current_object.name[:-4]
|
||||||
|
current_object.name += f"_{multi_material_index:03}"
|
||||||
|
multi_material_index += 1
|
||||||
|
assert current_object.name not in materials
|
||||||
materials[current_object.name] = i
|
materials[current_object.name] = i
|
||||||
elif type(i) is Object:
|
elif type(i) is Object:
|
||||||
|
multi_material_index = 0
|
||||||
current_object = i
|
current_object = i
|
||||||
elif type(i) is MtlLib:
|
elif type(i) is MtlLib:
|
||||||
current_mtllib = i
|
current_mtllib = i
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
from dataclasses import astuple
|
from dataclasses import astuple
|
||||||
import sys
|
import sys
|
||||||
from generate import renderer
|
from generate import renderer
|
||||||
|
import math
|
||||||
|
|
||||||
|
import fixed_point
|
||||||
|
|
||||||
from parse_obj import parse_obj_file
|
from parse_obj import parse_obj_file
|
||||||
from parse_obj import VertexPosition
|
from parse_obj import VertexPosition
|
||||||
@ -33,6 +36,17 @@ def render_triangles(prefix, faces):
|
|||||||
def render_quadrilateral(prefix, faces):
|
def render_quadrilateral(prefix, faces):
|
||||||
yield from render_faces(prefix, "quadrilateral", faces)
|
yield from render_faces(prefix, "quadrilateral", faces)
|
||||||
|
|
||||||
|
def unit_vector(vec):
|
||||||
|
x = vec.x.to_float()
|
||||||
|
y = vec.y.to_float()
|
||||||
|
z = vec.z.to_float()
|
||||||
|
norm = math.sqrt(x ** 2 + y ** 2 + z ** 2)
|
||||||
|
return type(vec)(
|
||||||
|
fixed_point.parse(str(x / norm)),
|
||||||
|
fixed_point.parse(str(y / norm)),
|
||||||
|
fixed_point.parse(str(z / norm))
|
||||||
|
)
|
||||||
|
|
||||||
def xyz(vec):
|
def xyz(vec):
|
||||||
return (vec.x, vec.y, vec.z)
|
return (vec.x, vec.y, vec.z)
|
||||||
|
|
||||||
@ -57,7 +71,7 @@ def render_vertex(profile_item, vertex_tuple):
|
|||||||
def render_vertices(profile_item, prefix, name, vertices):
|
def render_vertices(profile_item, prefix, name, vertices):
|
||||||
yield f"// {profile_item.to_str()}"
|
yield f"// {profile_item.to_str()}"
|
||||||
yield f"vertex_{name} {prefix}_{name}[] = {{"
|
yield f"vertex_{name} {prefix}_{name}[] = {{"
|
||||||
for vertex in vertices:
|
for i, vertex in enumerate(vertices):
|
||||||
yield from render_vertex(profile_item, vertex)
|
yield from render_vertex(profile_item, vertex)
|
||||||
yield "};"
|
yield "};"
|
||||||
|
|
||||||
@ -71,7 +85,7 @@ def render_vertex_normals(profile, prefix, vertex_normals):
|
|||||||
yield from render_vertices(profile.normal,
|
yield from render_vertices(profile.normal,
|
||||||
prefix,
|
prefix,
|
||||||
"normal",
|
"normal",
|
||||||
map(xyz, vertex_normals))
|
map(xyz, map(unit_vector, vertex_normals)))
|
||||||
|
|
||||||
def render_vertex_texture(profile, prefix, vertex_textures):
|
def render_vertex_texture(profile, prefix, vertex_textures):
|
||||||
yield from render_vertices(profile.texture,
|
yield from render_vertices(profile.texture,
|
||||||
|
6287
model/happy_mask_salesman/happy_mask_salesman.h
Normal file
162
model/happy_mask_salesman/happy_mask_salesman.mtl
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
# Blender 4.1.1 MTL File: 'None'
|
||||||
|
# www.blender.org
|
||||||
|
|
||||||
|
newmtl material-001D075B
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Ke 0.000000 0.000000 0.000000
|
||||||
|
Ni 1.500000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
map_Kd mask_07_C200.png
|
||||||
|
map_Ks mask_07_C200.png
|
||||||
|
map_Ns mask_07_C200.png
|
||||||
|
|
||||||
|
newmtl material-0033AD02
|
||||||
|
Ns 0.000000
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Ks 0.000000 0.000000 0.000000
|
||||||
|
Ke 0.000000 0.000000 0.000000
|
||||||
|
Ni 1.500000
|
||||||
|
d 1.000000
|
||||||
|
illum 1
|
||||||
|
map_Kd maskmaster_00_0.png
|
||||||
|
|
||||||
|
newmtl material-0059BDCE
|
||||||
|
Ns 0.000000
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Ks 0.000000 0.000000 0.000000
|
||||||
|
Ke 0.000000 0.000000 0.000000
|
||||||
|
Ni 1.500000
|
||||||
|
d 1.000000
|
||||||
|
illum 1
|
||||||
|
map_Kd maskmaster_e00_6A00.png
|
||||||
|
|
||||||
|
newmtl material-00650E52
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Ke 0.000000 0.000000 0.000000
|
||||||
|
Ni 1.500000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
map_Kd mask_00_8A00.png
|
||||||
|
map_Ks mask_00_8A00.png
|
||||||
|
map_Ns mask_00_8A00.png
|
||||||
|
|
||||||
|
newmtl material-007F0EC7
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Ke 0.000000 0.000000 0.000000
|
||||||
|
Ni 1.000000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
map_Kd maskmaster_00_0.png
|
||||||
|
map_Ks s_maskmaster_00_2000.png
|
||||||
|
map_Ns s_maskmaster_00_2000.png
|
||||||
|
|
||||||
|
newmtl material-01054239
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Ke 0.000000 0.000000 0.000000
|
||||||
|
Ni 1.500000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
map_Kd mask_08_CA00.png
|
||||||
|
map_Ks mask_08_CA00.png
|
||||||
|
map_Ns mask_08_CA00.png
|
||||||
|
|
||||||
|
newmtl material-012F5405
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Ke 0.000000 0.000000 0.000000
|
||||||
|
Ni 1.500000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
map_Kd mask_09_D200.png
|
||||||
|
map_Ks mask_09_D200.png
|
||||||
|
map_Ns mask_09_D200.png
|
||||||
|
|
||||||
|
newmtl material-0194E6CE
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Ke 0.000000 0.000000 0.000000
|
||||||
|
Ni 1.500000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
map_Kd mask_05_B200.png
|
||||||
|
map_Ks mask_05_B200.png
|
||||||
|
map_Ns mask_05_B200.png
|
||||||
|
|
||||||
|
newmtl material-01D11516
|
||||||
|
Ns 0.000000
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Ks 0.000000 0.000000 0.000000
|
||||||
|
Ke 0.000000 0.000000 0.000000
|
||||||
|
Ni 1.500000
|
||||||
|
d 1.000000
|
||||||
|
illum 1
|
||||||
|
map_Kd maskmaster_01_4A00.png
|
||||||
|
|
||||||
|
newmtl material-01D11516.001
|
||||||
|
Ns 0.000000
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Ks 0.000000 0.000000 0.000000
|
||||||
|
Ke 0.000000 0.000000 0.000000
|
||||||
|
Ni 1.500000
|
||||||
|
d 1.000000
|
||||||
|
illum 1
|
||||||
|
map_Kd maskmaster_01_4A00.png
|
||||||
|
|
||||||
|
newmtl material-01F419A5
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Ke 0.000000 0.000000 0.000000
|
||||||
|
Ni 1.500000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
map_Kd mask_04_AA00.png
|
||||||
|
map_Ks mask_04_AA00.png
|
||||||
|
map_Ns mask_04_AA00.png
|
||||||
|
|
||||||
|
newmtl material-023C1D43
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Ke 0.000000 0.000000 0.000000
|
||||||
|
Ni 1.500000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
map_Kd mask_06_BA00.png
|
||||||
|
map_Ks mask_06_BA00.png
|
||||||
|
map_Ns mask_06_BA00.png
|
||||||
|
|
||||||
|
newmtl material-0327AC42
|
||||||
|
Ns 0.000000
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Ks 0.000000 0.000000 0.000000
|
||||||
|
Ke 0.000000 0.000000 0.000000
|
||||||
|
Ni 1.500000
|
||||||
|
d 1.000000
|
||||||
|
illum 1
|
||||||
|
map_Kd maskmaster_m00_7A00.png
|
||||||
|
|
||||||
|
newmtl material-038D80E9
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Ke 0.000000 0.000000 0.000000
|
||||||
|
Ni 1.500000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
map_Kd mask_01_9200.png
|
||||||
|
map_Ks mask_01_9200.png
|
||||||
|
map_Ns mask_01_9200.png
|
||||||
|
|
||||||
|
newmtl material-03C5C9F5
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Ke 0.000000 0.000000 0.000000
|
||||||
|
Ni 1.500000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
map_Kd mask_03_A200.png
|
||||||
|
map_Ks mask_03_A200.png
|
||||||
|
map_Ns mask_03_A200.png
|
||||||
|
|
||||||
|
newmtl material-03F98837
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Ke 0.000000 0.000000 0.000000
|
||||||
|
Ni 1.500000
|
||||||
|
d 1.000000
|
||||||
|
illum 2
|
||||||
|
map_Kd mask_02_9A00.png
|
||||||
|
map_Ks mask_02_9A00.png
|
||||||
|
map_Ns mask_02_9A00.png
|
5063
model/happy_mask_salesman/happy_mask_salesman.obj
Normal file
19
model/happy_mask_salesman/mask_00_8A00.data
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
--..661<@@@@@@@@@@#--..66<<@@@@@@@@@@.#--..66<<@@@@@@@@@@b#--..66<<@@@@@@@@@@³##....66<<@@@@@@@@³³##....66<<@@@@@@@@,ÑÑ
|
||||||
|
%6<<@@@@@@@@ÑÑÑ
|
||||||
|
|
||||||
|
%611@@@@@@@@&ÅÅÅ3####..<<@@@@´ÅÅÅ3AAA##..<<@@@@&´»¬»””©¾ÄÂË˵‰..1<@@@@
|
||||||
|
´´¬»»»ÄÄÄÄÓËÓÓÔÔ‰11@@@@¬¿°°¹ÁÂÂËÓÐÒÒÕÖÖÖ¸++<<<<Y¶¶°°¹¹ËËËÓÒÐÒÕÖÖÖÖˆ+1<<<º¬¬ ׿÷÷ÿúíÚÌÌÌÌÛ¼1<<<º¬¬ Üÿÿ÷÷úúÿÿåÌÌÌÛÛN <<<>²¯¯ÀÀßýää``8WªòÿÿãÏÍÍÎ,2<<^²¤¯ÀÀýýÃîÿÿÏÍÄÎ,2<<^²¤¯ÀóýßîÿôÈÈÎÎ1<²²¤¯Àóý'ÊÿÿÍÈÎÎ11
|
||||||
|
|
||||||
|
”¦‘¤Ýÿâ
|
||||||
|
=ùÿïžžž66
|
||||||
|
¦¦‘¤Ýÿâ
|
||||||
|
õÿïžžž %6 ”¦›¤éÿÊ
|
||||||
|
õÿþ†††%6 v”›‘éÿâ
|
||||||
|
ùÿþ†††%6(((•• Æÿü(ÊÿÿÞttt%6(((• ÆÿÿáîÿÿÇttt%6666• ÆêÿüØÿÿè±±±O%%666 • ÆÆÿÿòªuÙÿÿøØ±±±;%%6666ŸŸ‡‡àÿüüöìññûûÿÿÉÉ––
|
||||||
|
#266668ŸŸ‡‡‡àöüüüÿÿÿÿëÉÉÉ––##66668 Ÿ” §§ððÿÿ罓“““––#666%88 ” §§§§½½½½““ŠŠ–^----...¥¥¥ ” ““““�ŒŒŒ—
|
||||||
|
...¥¥ ““““ŒŒ�i
|
||||||
|
!!
|
||||||
|
|
||||||
|
{®®®®””””………g5
|
||||||
|
|
||||||
|
33®®””””……*ffff‹’¢‹)§¡ŽŽŽ««««««««····ffff}}‹¢L§ŽŽƒƒŽ˜¡˜˜¡¡¡££££rrrr\\ss�¨¨PQ§§ƒƒƒƒ������������"T\\s}}�¨³³§§ƒƒƒƒ��‚‚‚‚�‚‚‚‚‚55Lhhh~~f}£�„„zzzzqqqqšššššššš55dhhhh~~}}}}„}zzz’q
5ddlll&!~f}}}}„fff‚��Iddll !f}}}„}kf‚f���?FJJg4ycc€€VV0eeff��IFFJJ5Gycc€€V0efkkfIFFJ Syycc€:#]]]]€€€FF SSyycc€#G]]]€€€€—<A&XR]__p_ddM]]]]____||j/XX]]____dddMM]]]]____||jjSXXRGrrrraaaL3>aaxxxxllll__jjASSXXGG""aaaaaaaaxx$$&l__jj7DHHUUEEZnnaaaaV"rrrDDHHUUEnnaRR>"rDDHHU?nrrrDDHB?r"KKEEKKEK??&#
|
5
model/happy_mask_salesman/mask_00_8A00.data.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_mask_00_8A00_data_start __asm("_binary_mask_00_8A00_data_start");
|
||||||
|
extern uint32_t _binary_mask_00_8A00_data_end __asm("_binary_mask_00_8A00_data_end");
|
||||||
|
extern uint32_t _binary_mask_00_8A00_data_size __asm("_binary_mask_00_8A00_data_size");
|
BIN
model/happy_mask_salesman/mask_00_8A00.data.pal
Normal file
5
model/happy_mask_salesman/mask_00_8A00.data.pal.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_mask_00_8A00_data_pal_start __asm("_binary_mask_00_8A00_data_pal_start");
|
||||||
|
extern uint32_t _binary_mask_00_8A00_data_pal_end __asm("_binary_mask_00_8A00_data_pal_end");
|
||||||
|
extern uint32_t _binary_mask_00_8A00_data_pal_size __asm("_binary_mask_00_8A00_data_pal_size");
|
BIN
model/happy_mask_salesman/mask_00_8A00.png
Normal file
After Width: | Height: | Size: 6.0 KiB |
8
model/happy_mask_salesman/mask_01_9200.data
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
û//Ëææäääääë†ÖÖêêêäóã[¼æäæææææäûË/ËæææääæäëÖ††Öêêêäëü[[æææææææäúúooæææääæäðìSSìææææãë¼[ÝÝÝÝääääÒúúoŒÁÝäæêððì—SÆæäææãëý[zÝ´ÝääääçàççTœØØîõîêìk^ÎÎÓÓääþ‡I×××ææææççÔçÇTtØîêêêk^^ddœÓäääÀI×××ææææÝÝÈÈíÇ.t˜ËËbkÛÛòΜA[Å––ƒ¹¹êêêêÝÈÝ´Çí§.b˜b°ìÛÛÎÎÓÿÅ–[[>>>>J•••éÞîÙ´´í‘>>¹æÝææççäÙëëë‚ññÚÚÚ«éòîÙ´šµí>>>¹Ïæææääçäëë‚»ñ÷÷÷÷òùîÙ´šµÓôFF¬ž·žžž···¡¡)“ÆÝÝøøòùî·¨´µµô¬F‡‡eeee‡‡b)bÆVÆççççîõîÝʾ®®ë2
|
||||||
|
|
||||||
|
”ÈÈ>ÜÜààîõîçÑÊÑÊ2
|
||||||
|
Q”Ýȹ~ÜààîóççææææmyšÝ¹>4¬ààîîççæææÀyšÈ¹ƒ44ééááÝÝÁÁ¥¥////EE7„ÝÝÁžoËûûû‘E77
|
||||||
|
O¥
|
||||||
|
<‡ÀääÝÝÁžl¶ïøøøøééá°O
|
||||||
|
|
||||||
|
<™ääääÝÝÝÝÍl-¥ïïææææßßÐߢ2|ÌçççÝÝÝݯ¯<²ÈÝææææÐкºËËË2‡ÌÌÁÁÁž\²šÝææææÂÂÎÎÈÙë²ÈÈÙää䳦³ÂÈÈÙÙ55ššÔÔÔÙ¨žŒž››ÉÉÅ()èç‡>>\ŠŠŠ¸žŒŒ�…›®öÅ)èèç̹>Èšš��›}ÅÅ"´Ôëë̃>ËÕÕËÈš��››‰‰ ŠŠD¯ëëë뇹ÜÜÕÕǺ¢¢Ž¤ªŸ¨+uÙüüà´žžOpÏÏÏëÜ~4~ØØÇÇÇШ¢Ÿ¤ªŽ¨+ÙÙàüüüõõO-ŒŒÏÏÜܬ4g—œœÇß·¨¤¤ŸŽ�o��ž´ÌÌÝÝ’-ŒŒÀÀÁõÝžggTTÐß·¤¤Ÿ¾o///‚‚ž´ÁÁ’-mŒŒ¢ÁÝÝÝØØííÐÞ̸±±±h(Ii(.���‹‹‹*WWƒƒž··ž¯¯ÄÄÐÖÌñ±hI‰‰‰.��‹‹**ƒ¬WW‡‡ž‡\ÐÐÃç€$S••‡‡v
vvnKKKoo;ÞÐ̸€$S€‡‡•‡v
.nff;ÙÙÙž))˜˜‡‡wwn�oožYcsª�ÙÙžG)˜˜˜‡‡w4n��ožYss��½½•À¢•ž‡wA†h†orrcsssFlÀÀ¢¢·žU4hh††žrcsssw‚´ÔÔÁ¨±±7Zuf��%��Tezi5w¡žÌçÔÔÁ±dZ—fr�%T¦��eeiwwž´ÔçÔÔ±1vvfrTT´‚š‚ePwF‚ž¨ÔÔÔd1—Zru%¦´‚š‚e8kkKˆ“©»»nnnueK»•••r<kkKK““ˆK�CnuPK»‚•rX^^^KR“ˆggg„u8ˆUUU^^^^Rtˆ gg„u8ˆ44MZggV^_&©RhqqLq<MMZk^V_6©RhqqL1MMZvgg_6“Rq†llMMZvgg_&t“q†l\½½ââââSSSv�qa3D|||Z»ZŠ´zrferSSSv�q“3»»»»DzzeXXeMMHZ‘�“3ŠšzzšDDzz]MM:M‘‘“<DŠŠŠŠŠ-eezzŠD899MH:Z““33ggAATh{£N 9]]]€$S§¿¿¿¿HHHM“aaa::AAAANN£ 9]]$$§€jjjjH::Z„'Sa3:RMMMMLLh‹,,%¦�T;;4;H:HZ'S„“aR:HHHHLLLh,!?¦TTTUU;FQ0B#Z€€„„tgSSTTKKKK<-w¡hATTMZHHQ0ZZZtgtvvvddg^g^<wFATTAMHHM077==6???avxxnn„„<ww††vvvZ#B====????77TT^^^K-ww†qqkvvk
|
5
model/happy_mask_salesman/mask_01_9200.data.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_mask_01_9200_data_start __asm("_binary_mask_01_9200_data_start");
|
||||||
|
extern uint32_t _binary_mask_01_9200_data_end __asm("_binary_mask_01_9200_data_end");
|
||||||
|
extern uint32_t _binary_mask_01_9200_data_size __asm("_binary_mask_01_9200_data_size");
|
BIN
model/happy_mask_salesman/mask_01_9200.data.pal
Normal file
5
model/happy_mask_salesman/mask_01_9200.data.pal.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_mask_01_9200_data_pal_start __asm("_binary_mask_01_9200_data_pal_start");
|
||||||
|
extern uint32_t _binary_mask_01_9200_data_pal_end __asm("_binary_mask_01_9200_data_pal_end");
|
||||||
|
extern uint32_t _binary_mask_01_9200_data_pal_size __asm("_binary_mask_01_9200_data_pal_size");
|
BIN
model/happy_mask_salesman/mask_01_9200.png
Normal file
After Width: | Height: | Size: 6.5 KiB |
1
model/happy_mask_salesman/mask_02_9A00.data
Normal file
@ -0,0 +1 @@
|
|||||||
|
&&""""&&&&&&&&&&&&
" &&""
#####
..---)+++"
#-3-//66
--
II
Ey涛y1Eq禿テテススh1
5bクマ粐襃��bず糯��杦瘉N'_}ァァィル�����タ㊤ーーァァィル��驎餧�鉗�樽Fーーァァィル髙����鉗��ヌ�Σーァァィソ������タ���,ウカャ。。ッケ����鈼ニニ^Of榜洄�gウカャュュケケ��顥�ニ:t檄洄�gウカャューケハ���fOttワ榘�ウウサカキキケハマ粲齲V:f柎ヲ毖�ィウククテャエエリリ、88Zunn土y顯�!ウセクヌテャエエ�5[uォォォttィyy顰�$$オセヌユテ淑,55}「ナナママクク|tィィy顰�$.セセヌユレテエエ粕ナナナ胱�マ|uィィy顰�Dヒヒビ跛メタコ�テテン粐簪||オ「kル髙0:タヒビ�メヌコ�テミン粐篋|n「「kル�00タヌビ�ホホミ。t榜ヤヤヤヤ柤^「徒ル�0タタビ�ホタミコtTTttTTT^nオ�ル�2オオケハ�遯テテセオ�5Pセャレ掫yテ�2オオケハ瑕遯ャャセセ�51}セテテ符禿�2�ッケユ�隨ャィィリbhhセセャ巡�テ髙((_オッケヌ珸釟ャオウリリススセセ緒封禿�ゥァァキヅ�贅」」」イイイz轄麹侈�ゥァァキキビ�裹裹ロロロロ麹轄侈�--?ァァァキイ゙踰��粐粲荘荘ッハ�?立ァァイイワ蹂�鶴��鎗ーッハ髙33試而キサヨ踝�鉗マヌト捫~ヌユ��!3R試ァキサノ゚跏゚鄲クマトccト珥��!3A・・ァァササヌヌヌユタタママキKy���!AAA・ァァャャククヌヌ」タヌマキKyキユヌムム-D娃。アアクヌセ�ャノママォ8Zu{{{{-N�。�アヌユ��サノママォZ885555-�挙�セユヌ�セノヨマロヤtTTJJ<<-#f�給アヘユェ�ヘノノマロヤヤ杁jjj[))!Y���ユレ湘テソヘロ゙跏゚モeee))!2���ヌ狹小テナヘ裹踝゚゚ネネ�)$2r麹降�ユ鹹c敍ナベ裝蒿萠フフフ)!.rr麹~~��c敍トソソユ裝莅m````o�滑滑∨艨TォソソナナナナョoHHCCCCHo|�滑梶ノ艨Tォソソナナナ}HHHHUdpp%oo|�ычア敎TォィソォォuZ__�鵄�@Ho�麹剛桶澵Ti給uZZZオオ聽��5d|沫給挙ィ糯媾\\SSs恂末昧x�Gdn沫覧挙慫�媾\惧惧||nniiiiUU^|立覧覧ク粲�珈タイイシシメメメロメメUG^^匡ァァ惧クマ獨ユユマタタマメメ裹粐粐X7Xx銘チァァァツマロロロレレレレメ゙゙゙゙゙゙ユ4X7Eaa末キァァァタマロロレヨレヨメメユユユユユユLL';QQd{ァキァ欄ィテテヘヘヘナツツツツツツツツL;';99Qd匡キァ涛鐙カソナナココココキキキコW**77=E[vョョィィ欄涛梨棍棍血血W*77==9[[v梨恬惧惧梃血�W17==7>BEUpppoob{{{{粕粕W17==7>>BCCCUQQQQUUUU]]ll
|
5
model/happy_mask_salesman/mask_02_9A00.data.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_mask_02_9A00_data_start __asm("_binary_mask_02_9A00_data_start");
|
||||||
|
extern uint32_t _binary_mask_02_9A00_data_end __asm("_binary_mask_02_9A00_data_end");
|
||||||
|
extern uint32_t _binary_mask_02_9A00_data_size __asm("_binary_mask_02_9A00_data_size");
|
BIN
model/happy_mask_salesman/mask_02_9A00.data.pal
Normal file
5
model/happy_mask_salesman/mask_02_9A00.data.pal.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_mask_02_9A00_data_pal_start __asm("_binary_mask_02_9A00_data_pal_start");
|
||||||
|
extern uint32_t _binary_mask_02_9A00_data_pal_end __asm("_binary_mask_02_9A00_data_pal_end");
|
||||||
|
extern uint32_t _binary_mask_02_9A00_data_pal_size __asm("_binary_mask_02_9A00_data_pal_size");
|
BIN
model/happy_mask_salesman/mask_02_9A00.png
Normal file
After Width: | Height: | Size: 6.4 KiB |
BIN
model/happy_mask_salesman/mask_03_A200.data
Normal file
5
model/happy_mask_salesman/mask_03_A200.data.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_mask_03_A200_data_start __asm("_binary_mask_03_A200_data_start");
|
||||||
|
extern uint32_t _binary_mask_03_A200_data_end __asm("_binary_mask_03_A200_data_end");
|
||||||
|
extern uint32_t _binary_mask_03_A200_data_size __asm("_binary_mask_03_A200_data_size");
|
BIN
model/happy_mask_salesman/mask_03_A200.data.pal
Normal file
5
model/happy_mask_salesman/mask_03_A200.data.pal.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_mask_03_A200_data_pal_start __asm("_binary_mask_03_A200_data_pal_start");
|
||||||
|
extern uint32_t _binary_mask_03_A200_data_pal_end __asm("_binary_mask_03_A200_data_pal_end");
|
||||||
|
extern uint32_t _binary_mask_03_A200_data_pal_size __asm("_binary_mask_03_A200_data_pal_size");
|
BIN
model/happy_mask_salesman/mask_03_A200.png
Normal file
After Width: | Height: | Size: 6.1 KiB |
1
model/happy_mask_salesman/mask_04_AA00.data
Normal file
@ -0,0 +1 @@
|
|||||||
|
%%!///;;;/;;**%%%%%/;;;;;;;/;8***%%%%****;;;;;/8*%*88*////;/88**8;J%****;//;888J;M¸c***//;;/JJ//!‚òññ¼%%***8JJJ!!!Çòòñññ¼%***JJ;!êõõõññññ§%%;J/!”ÔõõõËññà§%88¼ññíígÔññ¼%*8¼ñññ¿g”ñññ¼%22öñññ¼*x
Xéûû¥22‚ööññ¼*xxx
XXéûÜ¥""Çòöö¸c†„„„PÕóóÙÙ"Éòòö†††„Pf„˜˜ìóóó%ïïååÁ&'FŒŒŒ@m{>gíððÞïïå“&&'qŒŒF9@{{7¿ððÞÞïÖ‘>{{z€Û{}¿îîWÞÞÖ¹**{{{zþþ€{}7¿îîååÓ¹>s�� þþþÉŠ|FšììÁåëÓCCss�æþþþþwŠ|Fšìì&Áëë´Cssw÷þþþþÕ9Š|4Èìì&&Óëç´>KÉüþþüÕŠŠ|4ÈììµÑÑ¡^£ÏÏDubb^XãääÑÑè¡^^uubb^·ãääÑèè\\\\Fbbbbbããää:èèØ®\\oooobbbbPF©ããââ»×××¢YYYYUUUP‰Ýßßßß××××°’’YKPPKÝÝßÚÚÚ:¶ááÊÊÊIaaawÝÝ××××:¶áÊÊ¢IaaÉÝÝÎÎÅÅ*¼Ì¾§#e@,,ÄÄÄĈvˆˆ*%hÌ̾yee,±Äªnn````**%hÆÌÌy3e#±ÐŸjj&=hh**%ÆÆÌ¢33#mбj&hhh**%&ÁÃÃ~Q<<0ººpJ=…gg*%“ÁÃQQ<0��p+J…gSS*%[ÁÁR$$A������HHHH**%³ÁÁRR$ //²²¬‡55/;*‡²²¬I55;;8*I¬²²I5JJ8*‡¬²‰I
OG83ž¦œ& OG8_¦¦d& ÍøúúùùùùO2*Žžž&& ..æþþþþþþüþþG2*Žž™&&¯ýýþþþþúþüþþþJ/—�"Éþþôô½«›•‹•›‹‹‹;;*—�ÒþøøÉ––••›£££££££/J*��˜÷÷À¨¨€––••›¨¨¨««¤¤!;*ƒƒ2˜ÕÒ›€€€€––••›››› ***)‡‡k))))*8**S‡kk***),Srrrigg]]VVVV]]]]SSS,*8)),TiiitgttllllggggSS,%%..HHH[[[[ZZZZLL--%%%...**%%*%%%%**%%***%%****!!!/****1122%**%%****88;;;;8888@@GG%%%**11@@????BBBB@@GG%*8111@????BBBB1@22
|
5
model/happy_mask_salesman/mask_04_AA00.data.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_mask_04_AA00_data_start __asm("_binary_mask_04_AA00_data_start");
|
||||||
|
extern uint32_t _binary_mask_04_AA00_data_end __asm("_binary_mask_04_AA00_data_end");
|
||||||
|
extern uint32_t _binary_mask_04_AA00_data_size __asm("_binary_mask_04_AA00_data_size");
|
BIN
model/happy_mask_salesman/mask_04_AA00.data.pal
Normal file
5
model/happy_mask_salesman/mask_04_AA00.data.pal.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_mask_04_AA00_data_pal_start __asm("_binary_mask_04_AA00_data_pal_start");
|
||||||
|
extern uint32_t _binary_mask_04_AA00_data_pal_end __asm("_binary_mask_04_AA00_data_pal_end");
|
||||||
|
extern uint32_t _binary_mask_04_AA00_data_pal_size __asm("_binary_mask_04_AA00_data_pal_size");
|
BIN
model/happy_mask_salesman/mask_04_AA00.png
Normal file
After Width: | Height: | Size: 6.2 KiB |
BIN
model/happy_mask_salesman/mask_05_B200.data
Normal file
5
model/happy_mask_salesman/mask_05_B200.data.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_mask_05_B200_data_start __asm("_binary_mask_05_B200_data_start");
|
||||||
|
extern uint32_t _binary_mask_05_B200_data_end __asm("_binary_mask_05_B200_data_end");
|
||||||
|
extern uint32_t _binary_mask_05_B200_data_size __asm("_binary_mask_05_B200_data_size");
|
BIN
model/happy_mask_salesman/mask_05_B200.data.pal
Normal file
5
model/happy_mask_salesman/mask_05_B200.data.pal.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_mask_05_B200_data_pal_start __asm("_binary_mask_05_B200_data_pal_start");
|
||||||
|
extern uint32_t _binary_mask_05_B200_data_pal_end __asm("_binary_mask_05_B200_data_pal_end");
|
||||||
|
extern uint32_t _binary_mask_05_B200_data_pal_size __asm("_binary_mask_05_B200_data_pal_size");
|
BIN
model/happy_mask_salesman/mask_05_B200.png
Normal file
After Width: | Height: | Size: 6.1 KiB |
5
model/happy_mask_salesman/mask_06_BA00.data
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
哏牯趑趑趑趑趑趑趑趑趑趑趑趑趑趑哏牯趑趑趑趑趑趑趑趑趑趑趑趑趑趑哏牯趑趑趑趑趑趑趑趑趑趑趑趑趑趑哏牯趑趑趑趑趑趑趑趑趑趑趑趑趑趑沣牯趑趑趑趑趑趑趑趑趑趑趑趑腽痧沣牯趑趑趑趑趑趑趑趑趑趑趑趑疱痧沣牯趑趑趑趑趑趑趑趑趑趑腽痧筵篌沣牯趑趑趑趑趑趑趑趑趑綮囵痧逅弩噜腽趑趑趑趑趑趑趑趑殚棰�篌婧玩剜腽趑趑趑趑趑趑趑�殚��篌涵和剜屦趑趑趑趑趑豉篌篌�2�鄪槮ω剜媵趑趑趑趑�趔篌薼2y朔€姌樬阝媵趑豇��痧鹗蕘/,p峱www傏徕腙趑豇�麴痧鄟/(HpHH\\mm遮噔牯趑篌篌适�/'6NFNFFQQY`照剽牯祠篌嗨�/#55NNNNFFFFQY`h舷卺弩篌�$$$\弿弿IIIIKKCC毉�窍卺邋摔栁挝照照翄IIK_C�乙仪险谯弩筻噱膈酹[.埥絼a_j€体腚肭舷折弩箫镲膈[a浇刯jμ镲镲虑窍奏咫镲佑A)浇泟崎鲻鲻韭窍素咫镲觪k桨勂轲鲻黾靠扑剜屣镉q2嚼勂轲鲻黾伎扑奏屣镉2嚼浺轲鳅�伎葡羡屣锬**能祥聱��技壳羡屣锬**鸟轳聱��辜柯羡屣锬�€啮鲻鳅��豆季滤坼���8L��鲻鳅��鞍掣技眯陂脲頣V�瘗����鞍彻姑汹陔痤睿T5耨痧腚腚崛热ォ┏豆好舷腽镲镫噜屣耨痧鼢綁nn湝煙ォ北焙孪噜腼镲镲镲耨噱鹘??n湞潩煩┏澈盒雄邋箅腽痼遨瀵2<悙棗潩ォ┏焙好僳圹噱腚遨僳�2<悙悢敂櫉ォ吵吵负妹兄沆爿演氙yll硾墘妸敂煙煡グ鞍焙眯沆熘排央滗换硥墰唵寣敊櫈 Ё惫剽�俣毠仉镲镲後嵴倐倖妸敊櫈¨惫剽�秲毠怡镲脲嵴屯~~~~倖寣姍灋⒐剽浏yy挂膣揶�=zzz~倐寙姅妸⑵忖痽yy荫胴�=vvvzzz倐唽倖�嫦{_q涙骓Xmmvvssz~倐z偒舷玙D壋骀Xjjjrjjrrvvv偢父cDD壋鎯eejrjejrgvv尭笗cD_洺�``hheeejhhf懤缷@:o捊&`YY`[[[e``f懓缷@:o拻SSSS^S^^YYGz洶x@:o択
MMMM^SSSYQGf剾x@No�2
HHHHSSPPMBBS{{iHHit
|
||||||
|
"" HHHHSSPPMBBMnniHHWt
|
||||||
|
|
||||||
|
7}1 HHHH^SEEEEEEbbWHHWt3
|
||||||
|
%U}噰++!!!!HHHH^^PPEEEEOOWHHHttL%"U噰档缮缮MMMMWiWRHHEE>EEEEEd厬憉-0]帋栽栽MMMMRiWRHHEE>>EEEE;d懘è0''''MMMMQ`hYHHEEE>EEE>;;v懆ú||4MMMMQQhh^HEEEEEEEE;;Gvuú膊铂�琈MMMHHWie[QQPEEEEEE>9B;厾浇狡破芃MMMHHHijeYQPEEEEEEEBB;;a剟牨惫盡MMMMMMSjj`QPPEEHHHHBB;;::=FFFFFMMMMMMMM[ehhPPPPHHHHBB;;=:::::::MMMMMMMMH^iiiWRRMMMMEEE>>>>>>>EEMMMMMMMMHHWiii^^SSSSPPPEEEEEPPPPMMMMMMMMHHHWrrrjjjjee[[[WWWWYY``MMMMMMMMHHHH[jrrrrjeeee[WWWWYYYY
|
5
model/happy_mask_salesman/mask_06_BA00.data.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_mask_06_BA00_data_start __asm("_binary_mask_06_BA00_data_start");
|
||||||
|
extern uint32_t _binary_mask_06_BA00_data_end __asm("_binary_mask_06_BA00_data_end");
|
||||||
|
extern uint32_t _binary_mask_06_BA00_data_size __asm("_binary_mask_06_BA00_data_size");
|
BIN
model/happy_mask_salesman/mask_06_BA00.data.pal
Normal file
5
model/happy_mask_salesman/mask_06_BA00.data.pal.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_mask_06_BA00_data_pal_start __asm("_binary_mask_06_BA00_data_pal_start");
|
||||||
|
extern uint32_t _binary_mask_06_BA00_data_pal_end __asm("_binary_mask_06_BA00_data_pal_end");
|
||||||
|
extern uint32_t _binary_mask_06_BA00_data_pal_size __asm("_binary_mask_06_BA00_data_pal_size");
|
BIN
model/happy_mask_salesman/mask_06_BA00.png
Normal file
After Width: | Height: | Size: 6.2 KiB |
BIN
model/happy_mask_salesman/mask_07_C200.data
Normal file
5
model/happy_mask_salesman/mask_07_C200.data.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_mask_07_C200_data_start __asm("_binary_mask_07_C200_data_start");
|
||||||
|
extern uint32_t _binary_mask_07_C200_data_end __asm("_binary_mask_07_C200_data_end");
|
||||||
|
extern uint32_t _binary_mask_07_C200_data_size __asm("_binary_mask_07_C200_data_size");
|
BIN
model/happy_mask_salesman/mask_07_C200.data.pal
Normal file
5
model/happy_mask_salesman/mask_07_C200.data.pal.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_mask_07_C200_data_pal_start __asm("_binary_mask_07_C200_data_pal_start");
|
||||||
|
extern uint32_t _binary_mask_07_C200_data_pal_end __asm("_binary_mask_07_C200_data_pal_end");
|
||||||
|
extern uint32_t _binary_mask_07_C200_data_pal_size __asm("_binary_mask_07_C200_data_pal_size");
|
BIN
model/happy_mask_salesman/mask_07_C200.png
Normal file
After Width: | Height: | Size: 6.3 KiB |
1
model/happy_mask_salesman/mask_08_CA00.data
Normal file
@ -0,0 +1 @@
|
|||||||
|
DDDDDDDDDDDDDDDDDDDDLLDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDLLDDDDDDDDDDKKKKKKKKKKKKPPPPCCCCLLDDDDDDDDDD;;;;KK;00000;;;&CLLDDDDDDDDDD((CCRR''!!!!7````DDDD(((('' #;``DDDD!!
G^^^^
%^^,44ääÞÞÞÇÁP vääääîîîîÁÁÁP ‚øøééîîîîîîééââ»–!
.øøøøîîîîóîîîîîîéééÊZ!!
.¿áåååääää¨UUU/˜ïïééÊʆ¿¿áåååää/–éÊÊÉÉ6!!PÓáÓáèèp 688MA))SÌÌôôô~ Áááááè B6888A)AAÌôôôôp ÁÁÈÓÓÓ\bµîóââÜ}DDSõõõõíf##ÁÁÓÓÓÈbµööóóéîÜÜÜ}SS?_õõõííífÓÛÓÓØŠ#nÞîòòòòòòßßßߥnV8IêêóóóëÓÛÛÓØ1næîîòòl+++3‘ßßË¥V8êêëëëëÓÛÛÓØ1ææÞîòZ#eeo´ËËc8I&êåìììÓÓÛÓØØææÞÞZeeeoËË€VI&êååååÑÑÔÔÑÔÔÔÚÞ4```E
EÂÂÁPM)ÏáåááÑÆÆÆÑÔÔÔÚÞ0``E
ÂÂÁPM)ÏáááÑ»»ÀÆÆÑÍÚ44ÂÂÁPM)ÏáÔÔÔ»»ÀÀÆÆÍÍ4-ÂÂÁPMÏáÔÔÔ¤¤³³¹¹¹ÈÎÎXo¾¾yM§âáááÔ™¤³³¯¹¹¹ÎÎÎX"""oÖ¾¾MMââåááá™™ª³¾¾¾¾ÞÇÇÇ}DDD_ ××¾nM)®ââãããã™™ª³¾¾00»ÇÇÇÜÜÜÜ××××n0)a®ââããããšš£°±×[©ÕÕÂÂÍÍÍ;nJJ¹åååññññšš£°±×[ÕÕÂÂÂÂ;ni¹Óååññññšš££±×*ŽÕÅÅÅž0 ...5 “𣣠×h0ŽªÅÅž¾rJ<<5... 5BB‹’“¡‘²Á$PPµµ¹¹¹¹ÐÐ�> II‹‹“¡‘¤Á##Pµ¹È¹¹ÐÐÐЃI II‹‹““‘‘ÁP@GG?ŒŒŒ½½½½»» ™™™™‹‹„“‘‘ÁÁv‡G??~~¥½»»»»Ë¸¸¸��‰”’›™º¶÷¶:**hhxxxx������‰‰‹›™º¦¶÷÷gg*z�‰‰‹’™¤¦¦¼¼úú—¢¢¢¢¼¼¼¼zz‰‰‹‹Š™¦¦úúú¢üüü¼ýý¼{{……‰‰‰”•««0�ççv÷ý¼¢ùûÃ{{{…‰‰‰‰•«««2$$¢ÃÃm|||………{‚•««¬Ã÷vmm||{{{{lll«¬¬¬Ãþÿ÷@ûû¼ddss||{qmmds¡¡Ä¡9u©ÙÙùýýù]dddm|{qmm]QZ‚¡Ä©uu9ÙüüÙ]]]]dm{qmmd]OOtœ¡ÄÄ’6:g]]]]dmq{|md]OOOO’’¡ÄÉɆ†:]]]]bbfw{qfqd]W??kˆˆž·ÝÝàààààððð]]]]bbfw{qqfddWW???k‚žžž¸¸¸ËËËËà]]]]]dddf{qqddWWVNA6//T�˜˜˜˜����]]]]]]]]fq{{sdkWVVAA////////]]]]]]]]bbfw{qff\\\ONAAAA666====]]]]]]]]bbbf{{qf\\\\VNNNNNNAH===]]]]]]]]]]]]f{{q]]]]WWOOOOOOFFFF]]]]]]]]]]]]ff{{sdd]WWWWWWWWYYYY]]]]]]]]]]]]]]dszjjfbbbbbfbd]dd]]]]]]]]]]]]]]]dzzwwwwwfwwsdds]]]]]]]]]]]]]]]]fq{{z‚‚‚‚z]]]]]]]]]]]]]]]]ffqqz�ŽŽ‚‚��
|
5
model/happy_mask_salesman/mask_08_CA00.data.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_mask_08_CA00_data_start __asm("_binary_mask_08_CA00_data_start");
|
||||||
|
extern uint32_t _binary_mask_08_CA00_data_end __asm("_binary_mask_08_CA00_data_end");
|
||||||
|
extern uint32_t _binary_mask_08_CA00_data_size __asm("_binary_mask_08_CA00_data_size");
|
BIN
model/happy_mask_salesman/mask_08_CA00.data.pal
Normal file
5
model/happy_mask_salesman/mask_08_CA00.data.pal.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_mask_08_CA00_data_pal_start __asm("_binary_mask_08_CA00_data_pal_start");
|
||||||
|
extern uint32_t _binary_mask_08_CA00_data_pal_end __asm("_binary_mask_08_CA00_data_pal_end");
|
||||||
|
extern uint32_t _binary_mask_08_CA00_data_pal_size __asm("_binary_mask_08_CA00_data_pal_size");
|
BIN
model/happy_mask_salesman/mask_08_CA00.png
Normal file
After Width: | Height: | Size: 6.2 KiB |
BIN
model/happy_mask_salesman/mask_09_D200.data
Normal file
5
model/happy_mask_salesman/mask_09_D200.data.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_mask_09_D200_data_start __asm("_binary_mask_09_D200_data_start");
|
||||||
|
extern uint32_t _binary_mask_09_D200_data_end __asm("_binary_mask_09_D200_data_end");
|
||||||
|
extern uint32_t _binary_mask_09_D200_data_size __asm("_binary_mask_09_D200_data_size");
|
BIN
model/happy_mask_salesman/mask_09_D200.data.pal
Normal file
After Width: | Height: | Size: 512 B |
5
model/happy_mask_salesman/mask_09_D200.data.pal.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_mask_09_D200_data_pal_start __asm("_binary_mask_09_D200_data_pal_start");
|
||||||
|
extern uint32_t _binary_mask_09_D200_data_pal_end __asm("_binary_mask_09_D200_data_pal_end");
|
||||||
|
extern uint32_t _binary_mask_09_D200_data_pal_size __asm("_binary_mask_09_D200_data_pal_size");
|
BIN
model/happy_mask_salesman/mask_09_D200.png
Normal file
After Width: | Height: | Size: 6.1 KiB |
BIN
model/happy_mask_salesman/maskmaster_00_0.data
Normal file
5
model/happy_mask_salesman/maskmaster_00_0.data.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_maskmaster_00_0_data_start __asm("_binary_maskmaster_00_0_data_start");
|
||||||
|
extern uint32_t _binary_maskmaster_00_0_data_end __asm("_binary_maskmaster_00_0_data_end");
|
||||||
|
extern uint32_t _binary_maskmaster_00_0_data_size __asm("_binary_maskmaster_00_0_data_size");
|
BIN
model/happy_mask_salesman/maskmaster_00_0.data.pal
Normal file
5
model/happy_mask_salesman/maskmaster_00_0.data.pal.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_maskmaster_00_0_data_pal_start __asm("_binary_maskmaster_00_0_data_pal_start");
|
||||||
|
extern uint32_t _binary_maskmaster_00_0_data_pal_end __asm("_binary_maskmaster_00_0_data_pal_end");
|
||||||
|
extern uint32_t _binary_maskmaster_00_0_data_pal_size __asm("_binary_maskmaster_00_0_data_pal_size");
|
BIN
model/happy_mask_salesman/maskmaster_00_0.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
model/happy_mask_salesman/maskmaster_01_4A00.data
Normal file
5
model/happy_mask_salesman/maskmaster_01_4A00.data.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_maskmaster_01_4A00_data_start __asm("_binary_maskmaster_01_4A00_data_start");
|
||||||
|
extern uint32_t _binary_maskmaster_01_4A00_data_end __asm("_binary_maskmaster_01_4A00_data_end");
|
||||||
|
extern uint32_t _binary_maskmaster_01_4A00_data_size __asm("_binary_maskmaster_01_4A00_data_size");
|
BIN
model/happy_mask_salesman/maskmaster_01_4A00.data.pal
Normal file
5
model/happy_mask_salesman/maskmaster_01_4A00.data.pal.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_maskmaster_01_4A00_data_pal_start __asm("_binary_maskmaster_01_4A00_data_pal_start");
|
||||||
|
extern uint32_t _binary_maskmaster_01_4A00_data_pal_end __asm("_binary_maskmaster_01_4A00_data_pal_end");
|
||||||
|
extern uint32_t _binary_maskmaster_01_4A00_data_pal_size __asm("_binary_maskmaster_01_4A00_data_pal_size");
|
BIN
model/happy_mask_salesman/maskmaster_01_4A00.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
model/happy_mask_salesman/maskmaster_e00_6A00.data
Normal file
5
model/happy_mask_salesman/maskmaster_e00_6A00.data.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_maskmaster_e00_6A00_data_start __asm("_binary_maskmaster_e00_6A00_data_start");
|
||||||
|
extern uint32_t _binary_maskmaster_e00_6A00_data_end __asm("_binary_maskmaster_e00_6A00_data_end");
|
||||||
|
extern uint32_t _binary_maskmaster_e00_6A00_data_size __asm("_binary_maskmaster_e00_6A00_data_size");
|
BIN
model/happy_mask_salesman/maskmaster_e00_6A00.data.pal
Normal file
5
model/happy_mask_salesman/maskmaster_e00_6A00.data.pal.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_maskmaster_e00_6A00_data_pal_start __asm("_binary_maskmaster_e00_6A00_data_pal_start");
|
||||||
|
extern uint32_t _binary_maskmaster_e00_6A00_data_pal_end __asm("_binary_maskmaster_e00_6A00_data_pal_end");
|
||||||
|
extern uint32_t _binary_maskmaster_e00_6A00_data_pal_size __asm("_binary_maskmaster_e00_6A00_data_pal_size");
|
BIN
model/happy_mask_salesman/maskmaster_e00_6A00.png
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
model/happy_mask_salesman/maskmaster_m00_7A00.data
Normal file
5
model/happy_mask_salesman/maskmaster_m00_7A00.data.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_maskmaster_m00_7A00_data_start __asm("_binary_maskmaster_m00_7A00_data_start");
|
||||||
|
extern uint32_t _binary_maskmaster_m00_7A00_data_end __asm("_binary_maskmaster_m00_7A00_data_end");
|
||||||
|
extern uint32_t _binary_maskmaster_m00_7A00_data_size __asm("_binary_maskmaster_m00_7A00_data_size");
|
BIN
model/happy_mask_salesman/maskmaster_m00_7A00.data.pal
Normal file
5
model/happy_mask_salesman/maskmaster_m00_7A00.data.pal.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <stdint.h>
|
||||||
|
extern uint32_t _binary_maskmaster_m00_7A00_data_pal_start __asm("_binary_maskmaster_m00_7A00_data_pal_start");
|
||||||
|
extern uint32_t _binary_maskmaster_m00_7A00_data_pal_end __asm("_binary_maskmaster_m00_7A00_data_pal_end");
|
||||||
|
extern uint32_t _binary_maskmaster_m00_7A00_data_pal_size __asm("_binary_maskmaster_m00_7A00_data_pal_size");
|
BIN
model/happy_mask_salesman/maskmaster_m00_7A00.png
Normal file
After Width: | Height: | Size: 6.3 KiB |
268
model/happy_mask_salesman/material.h
Normal file
@ -0,0 +1,268 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "model/material.h"
|
||||||
|
|
||||||
|
enum material {
|
||||||
|
material_001D075B,
|
||||||
|
material_0033AD02,
|
||||||
|
material_0059BDCE,
|
||||||
|
material_00650E52,
|
||||||
|
material_007F0EC7,
|
||||||
|
material_01054239,
|
||||||
|
material_012F5405,
|
||||||
|
material_0194E6CE,
|
||||||
|
material_01D11516,
|
||||||
|
material_01D11516_001,
|
||||||
|
material_01F419A5,
|
||||||
|
material_023C1D43,
|
||||||
|
material_0327AC42,
|
||||||
|
material_038D80E9,
|
||||||
|
material_03C5C9F5,
|
||||||
|
material_03F98837,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct material_descriptor material[] = {
|
||||||
|
[material_001D075B] = {
|
||||||
|
.pixel = {
|
||||||
|
.start = (uint8_t *)&_binary_mask_07_C200_data_start,
|
||||||
|
.size = (int)&_binary_mask_07_C200_data_size,
|
||||||
|
.vram_offset = 0,
|
||||||
|
.width = 32,
|
||||||
|
.height = 64,
|
||||||
|
},
|
||||||
|
.palette = {
|
||||||
|
.start = (uint8_t *)&_binary_mask_07_C200_data_pal_start,
|
||||||
|
.size = (int)&_binary_mask_07_C200_data_pal_size,
|
||||||
|
.vram_offset = 0,
|
||||||
|
.palette_size = 256,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[material_0033AD02] = {
|
||||||
|
.pixel = {
|
||||||
|
.start = (uint8_t *)&_binary_maskmaster_00_0_data_start,
|
||||||
|
.size = (int)&_binary_maskmaster_00_0_data_size,
|
||||||
|
.vram_offset = 2048,
|
||||||
|
.width = 128,
|
||||||
|
.height = 128,
|
||||||
|
},
|
||||||
|
.palette = {
|
||||||
|
.start = (uint8_t *)&_binary_maskmaster_00_0_data_pal_start,
|
||||||
|
.size = (int)&_binary_maskmaster_00_0_data_pal_size,
|
||||||
|
.vram_offset = 512,
|
||||||
|
.palette_size = 256,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[material_0059BDCE] = {
|
||||||
|
.pixel = {
|
||||||
|
.start = (uint8_t *)&_binary_maskmaster_e00_6A00_data_start,
|
||||||
|
.size = (int)&_binary_maskmaster_e00_6A00_data_size,
|
||||||
|
.vram_offset = 18432,
|
||||||
|
.width = 32,
|
||||||
|
.height = 64,
|
||||||
|
},
|
||||||
|
.palette = {
|
||||||
|
.start = (uint8_t *)&_binary_maskmaster_e00_6A00_data_pal_start,
|
||||||
|
.size = (int)&_binary_maskmaster_e00_6A00_data_pal_size,
|
||||||
|
.vram_offset = 1024,
|
||||||
|
.palette_size = 256,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[material_00650E52] = {
|
||||||
|
.pixel = {
|
||||||
|
.start = (uint8_t *)&_binary_mask_00_8A00_data_start,
|
||||||
|
.size = (int)&_binary_mask_00_8A00_data_size,
|
||||||
|
.vram_offset = 20480,
|
||||||
|
.width = 32,
|
||||||
|
.height = 64,
|
||||||
|
},
|
||||||
|
.palette = {
|
||||||
|
.start = (uint8_t *)&_binary_mask_00_8A00_data_pal_start,
|
||||||
|
.size = (int)&_binary_mask_00_8A00_data_pal_size,
|
||||||
|
.vram_offset = 1424,
|
||||||
|
.palette_size = 256,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[material_007F0EC7] = {
|
||||||
|
.pixel = {
|
||||||
|
.start = (uint8_t *)&_binary_maskmaster_00_0_data_start,
|
||||||
|
.size = (int)&_binary_maskmaster_00_0_data_size,
|
||||||
|
.vram_offset = 22528,
|
||||||
|
.width = 128,
|
||||||
|
.height = 128,
|
||||||
|
},
|
||||||
|
.palette = {
|
||||||
|
.start = (uint8_t *)&_binary_maskmaster_00_0_data_pal_start,
|
||||||
|
.size = (int)&_binary_maskmaster_00_0_data_pal_size,
|
||||||
|
.vram_offset = 1936,
|
||||||
|
.palette_size = 256,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[material_01054239] = {
|
||||||
|
.pixel = {
|
||||||
|
.start = (uint8_t *)&_binary_mask_08_CA00_data_start,
|
||||||
|
.size = (int)&_binary_mask_08_CA00_data_size,
|
||||||
|
.vram_offset = 38912,
|
||||||
|
.width = 32,
|
||||||
|
.height = 64,
|
||||||
|
},
|
||||||
|
.palette = {
|
||||||
|
.start = (uint8_t *)&_binary_mask_08_CA00_data_pal_start,
|
||||||
|
.size = (int)&_binary_mask_08_CA00_data_pal_size,
|
||||||
|
.vram_offset = 2448,
|
||||||
|
.palette_size = 256,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[material_012F5405] = {
|
||||||
|
.pixel = {
|
||||||
|
.start = (uint8_t *)&_binary_mask_09_D200_data_start,
|
||||||
|
.size = (int)&_binary_mask_09_D200_data_size,
|
||||||
|
.vram_offset = 40960,
|
||||||
|
.width = 32,
|
||||||
|
.height = 64,
|
||||||
|
},
|
||||||
|
.palette = {
|
||||||
|
.start = (uint8_t *)&_binary_mask_09_D200_data_pal_start,
|
||||||
|
.size = (int)&_binary_mask_09_D200_data_pal_size,
|
||||||
|
.vram_offset = 2960,
|
||||||
|
.palette_size = 256,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[material_0194E6CE] = {
|
||||||
|
.pixel = {
|
||||||
|
.start = (uint8_t *)&_binary_mask_05_B200_data_start,
|
||||||
|
.size = (int)&_binary_mask_05_B200_data_size,
|
||||||
|
.vram_offset = 43008,
|
||||||
|
.width = 32,
|
||||||
|
.height = 64,
|
||||||
|
},
|
||||||
|
.palette = {
|
||||||
|
.start = (uint8_t *)&_binary_mask_05_B200_data_pal_start,
|
||||||
|
.size = (int)&_binary_mask_05_B200_data_pal_size,
|
||||||
|
.vram_offset = 3472,
|
||||||
|
.palette_size = 256,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[material_01D11516] = {
|
||||||
|
.pixel = {
|
||||||
|
.start = (uint8_t *)&_binary_maskmaster_01_4A00_data_start,
|
||||||
|
.size = (int)&_binary_maskmaster_01_4A00_data_size,
|
||||||
|
.vram_offset = 45056,
|
||||||
|
.width = 128,
|
||||||
|
.height = 128,
|
||||||
|
},
|
||||||
|
.palette = {
|
||||||
|
.start = (uint8_t *)&_binary_maskmaster_01_4A00_data_pal_start,
|
||||||
|
.size = (int)&_binary_maskmaster_01_4A00_data_pal_size,
|
||||||
|
.vram_offset = 3984,
|
||||||
|
.palette_size = 256,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[material_01D11516_001] = {
|
||||||
|
.pixel = {
|
||||||
|
.start = (uint8_t *)&_binary_maskmaster_01_4A00_data_start,
|
||||||
|
.size = (int)&_binary_maskmaster_01_4A00_data_size,
|
||||||
|
.vram_offset = 61440,
|
||||||
|
.width = 128,
|
||||||
|
.height = 128,
|
||||||
|
},
|
||||||
|
.palette = {
|
||||||
|
.start = (uint8_t *)&_binary_maskmaster_01_4A00_data_pal_start,
|
||||||
|
.size = (int)&_binary_maskmaster_01_4A00_data_pal_size,
|
||||||
|
.vram_offset = 4496,
|
||||||
|
.palette_size = 256,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[material_01F419A5] = {
|
||||||
|
.pixel = {
|
||||||
|
.start = (uint8_t *)&_binary_mask_04_AA00_data_start,
|
||||||
|
.size = (int)&_binary_mask_04_AA00_data_size,
|
||||||
|
.vram_offset = 77824,
|
||||||
|
.width = 32,
|
||||||
|
.height = 64,
|
||||||
|
},
|
||||||
|
.palette = {
|
||||||
|
.start = (uint8_t *)&_binary_mask_04_AA00_data_pal_start,
|
||||||
|
.size = (int)&_binary_mask_04_AA00_data_pal_size,
|
||||||
|
.vram_offset = 5008,
|
||||||
|
.palette_size = 256,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[material_023C1D43] = {
|
||||||
|
.pixel = {
|
||||||
|
.start = (uint8_t *)&_binary_mask_06_BA00_data_start,
|
||||||
|
.size = (int)&_binary_mask_06_BA00_data_size,
|
||||||
|
.vram_offset = 79872,
|
||||||
|
.width = 32,
|
||||||
|
.height = 64,
|
||||||
|
},
|
||||||
|
.palette = {
|
||||||
|
.start = (uint8_t *)&_binary_mask_06_BA00_data_pal_start,
|
||||||
|
.size = (int)&_binary_mask_06_BA00_data_pal_size,
|
||||||
|
.vram_offset = 5520,
|
||||||
|
.palette_size = 256,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[material_0327AC42] = {
|
||||||
|
.pixel = {
|
||||||
|
.start = (uint8_t *)&_binary_maskmaster_m00_7A00_data_start,
|
||||||
|
.size = (int)&_binary_maskmaster_m00_7A00_data_size,
|
||||||
|
.vram_offset = 81920,
|
||||||
|
.width = 64,
|
||||||
|
.height = 32,
|
||||||
|
},
|
||||||
|
.palette = {
|
||||||
|
.start = (uint8_t *)&_binary_maskmaster_m00_7A00_data_pal_start,
|
||||||
|
.size = (int)&_binary_maskmaster_m00_7A00_data_pal_size,
|
||||||
|
.vram_offset = 6032,
|
||||||
|
.palette_size = 256,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[material_038D80E9] = {
|
||||||
|
.pixel = {
|
||||||
|
.start = (uint8_t *)&_binary_mask_01_9200_data_start,
|
||||||
|
.size = (int)&_binary_mask_01_9200_data_size,
|
||||||
|
.vram_offset = 83968,
|
||||||
|
.width = 32,
|
||||||
|
.height = 64,
|
||||||
|
},
|
||||||
|
.palette = {
|
||||||
|
.start = (uint8_t *)&_binary_mask_01_9200_data_pal_start,
|
||||||
|
.size = (int)&_binary_mask_01_9200_data_pal_size,
|
||||||
|
.vram_offset = 6544,
|
||||||
|
.palette_size = 256,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[material_03C5C9F5] = {
|
||||||
|
.pixel = {
|
||||||
|
.start = (uint8_t *)&_binary_mask_03_A200_data_start,
|
||||||
|
.size = (int)&_binary_mask_03_A200_data_size,
|
||||||
|
.vram_offset = 86016,
|
||||||
|
.width = 32,
|
||||||
|
.height = 64,
|
||||||
|
},
|
||||||
|
.palette = {
|
||||||
|
.start = (uint8_t *)&_binary_mask_03_A200_data_pal_start,
|
||||||
|
.size = (int)&_binary_mask_03_A200_data_pal_size,
|
||||||
|
.vram_offset = 7056,
|
||||||
|
.palette_size = 256,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[material_03F98837] = {
|
||||||
|
.pixel = {
|
||||||
|
.start = (uint8_t *)&_binary_mask_02_9A00_data_start,
|
||||||
|
.size = (int)&_binary_mask_02_9A00_data_size,
|
||||||
|
.vram_offset = 88064,
|
||||||
|
.width = 32,
|
||||||
|
.height = 64,
|
||||||
|
},
|
||||||
|
.palette = {
|
||||||
|
.start = (uint8_t *)&_binary_mask_02_9A00_data_pal_start,
|
||||||
|
.size = (int)&_binary_mask_02_9A00_data_pal_size,
|
||||||
|
.vram_offset = 7568,
|
||||||
|
.palette_size = 256,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|