Browse Source

feat: create separate mockup ROM to test organic hedges and textured floor

master
Matteo Benedetto 3 days ago
parent
commit
bff6168676
  1. 6
      Makefile
  2. 147
      make_mockup_tiles.py
  3. 26
      src/mockup_gfx.c
  4. 5
      src/mockup_gfx.h
  5. 59
      test_mockup.c

6
Makefile

@ -9,8 +9,9 @@ OBJS = $(patsubst $(SRC_DIR)/%.c, $(OBJ_DIR)/%.o, $(SRCS))
TARGET = maze.gb
AUDIO_TARGET = test_audio.gb
MOCKUP_TARGET = test_mockup.gb
all: $(TARGET) $(AUDIO_TARGET)
all: $(TARGET) $(AUDIO_TARGET) $(MOCKUP_TARGET)
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $(TARGET) $(OBJS)
@ -18,6 +19,9 @@ $(TARGET): $(OBJS)
$(AUDIO_TARGET): test_audio.c $(OBJ_DIR)/music.o
$(CC) $(CFLAGS) -o $(AUDIO_TARGET) test_audio.c $(OBJ_DIR)/music.o
$(MOCKUP_TARGET): test_mockup.c src/mockup_gfx.c
$(CC) $(CFLAGS) -o $(MOCKUP_TARGET) test_mockup.c src/mockup_gfx.c
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR)
$(CC) $(CFLAGS) -c -o $@ $<

147
make_mockup_tiles.py

@ -0,0 +1,147 @@
import os
tiles = {
"floor": [
"00000000",
"00010000",
"00100000",
"00000000",
"00000001",
"00000010",
"00000000",
"00001000",
],
"hedge": [
"12121121",
"22322322",
"12112112",
"23223223",
"11212112",
"22322322",
"12112121",
"23223223",
],
"hedge_top": [
"00000000",
"01111111",
"12121121",
"22322322",
"11212112",
"23223223",
"12112121",
"22322322",
],
"frame_tl": [
"33333333",
"31111111",
"31222222",
"31200000",
"31200000",
"31200000",
"31200000",
"31200000",
],
"frame_tr": [
"33333333",
"11111113",
"22222213",
"00000213",
"00000213",
"00000213",
"00000213",
"00000213",
],
"frame_bl": [
"31200000",
"31200000",
"31200000",
"31200000",
"31200000",
"31222222",
"31111111",
"33333333",
],
"frame_br": [
"00000213",
"00000213",
"00000213",
"00000213",
"00000213",
"22222213",
"11111113",
"33333333",
],
"frame_t": [
"33333333",
"11111111",
"22222222",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
],
"frame_b": [
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"22222222",
"11111111",
"33333333",
],
"frame_l": [
"31200000",
"31200000",
"31200000",
"31200000",
"31200000",
"31200000",
"31200000",
"31200000",
],
"frame_r": [
"00000213",
"00000213",
"00000213",
"00000213",
"00000213",
"00000213",
"00000213",
"00000213",
],
}
def to_gb_format(lines):
bytes_arr = []
for line in lines:
lo = 0
hi = 0
for i, char in enumerate(line):
val = int(char)
if val & 1:
lo |= (1 << (7 - i))
if val & 2:
hi |= (1 << (7 - i))
bytes_arr.append(lo)
bytes_arr.append(hi)
return bytes_arr
with open("src/mockup_gfx.c", "w") as f:
f.write('#include "mockup_gfx.h"\n\n')
f.write('const unsigned char MockupTileData[] = {\n')
for name, art in tiles.items():
b = to_gb_format(art)
f.write(' // ' + name + '\n')
f.write(' ' + ', '.join(f"0x{val:02X}" for val in b) + ',\n')
f.write('};\n')
with open("src/mockup_gfx.h", "w") as f:
f.write('#ifndef MOCKUP_GFX_H\n#define MOCKUP_GFX_H\n\n')
f.write('extern const unsigned char MockupTileData[];\n')
f.write('#endif\n')
print("Generato mockup_gfx.c e .h")

26
src/mockup_gfx.c

@ -0,0 +1,26 @@
#include "mockup_gfx.h"
const unsigned char MockupTileData[] = {
// floor
0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00,
// hedge
0xAD, 0x52, 0x24, 0xFF, 0xB6, 0x49, 0x49, 0xFF, 0xD6, 0x29, 0x24, 0xFF, 0xB5, 0x4A, 0x49, 0xFF,
// hedge_top
0x00, 0x00, 0x7F, 0x00, 0xAD, 0x52, 0x24, 0xFF, 0xD6, 0x29, 0x49, 0xFF, 0xB5, 0x4A, 0x24, 0xFF,
// frame_tl
0xFF, 0xFF, 0xFF, 0x80, 0xC0, 0xBF, 0xC0, 0xA0, 0xC0, 0xA0, 0xC0, 0xA0, 0xC0, 0xA0, 0xC0, 0xA0,
// frame_tr
0xFF, 0xFF, 0xFF, 0x01, 0x03, 0xFD, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05,
// frame_bl
0xC0, 0xA0, 0xC0, 0xA0, 0xC0, 0xA0, 0xC0, 0xA0, 0xC0, 0xA0, 0xC0, 0xBF, 0xFF, 0x80, 0xFF, 0xFF,
// frame_br
0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0xFD, 0xFF, 0x01, 0xFF, 0xFF,
// frame_t
0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// frame_b
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF,
// frame_l
0xC0, 0xA0, 0xC0, 0xA0, 0xC0, 0xA0, 0xC0, 0xA0, 0xC0, 0xA0, 0xC0, 0xA0, 0xC0, 0xA0, 0xC0, 0xA0,
// frame_r
0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05,
};

5
src/mockup_gfx.h

@ -0,0 +1,5 @@
#ifndef MOCKUP_GFX_H
#define MOCKUP_GFX_H
extern const unsigned char MockupTileData[];
#endif

59
test_mockup.c

@ -0,0 +1,59 @@
#include <gb/gb.h>
#include "mockup_gfx.h"
// ID dei tile in base all'ordine nel dizionario python:
// 0: floor
// 1: hedge
// 2: hedge_top
// 3: frame_tl
// 4: frame_tr
// 5: frame_bl
// 6: frame_br
// 7: frame_t
// 8: frame_b
// 9: frame_l
// 10: frame_r
const uint8_t level_map[18][20] = {
{3, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 4},
{9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10},
{9, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0,10},
{9, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0,10},
{9, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,10},
{9, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,10},
{9, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,10},
{9, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0,10},
{9, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0,10},
{9, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10},
{9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1,10},
{9, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0,10},
{9, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0,10},
{9, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0,10},
{9, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0,10},
{9, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,10},
{9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,10},
{5, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6}
};
void main(void) {
DISPLAY_OFF;
// Palette GBDK standard
BGP_REG = 0b11100100;
set_bkg_data(0, 11, MockupTileData);
for (uint8_t y = 0; y < 18; y++) {
for (uint8_t x = 0; x < 20; x++) {
uint8_t t = level_map[y][x];
set_bkg_tiles(x, y, 1, 1, &t);
}
}
SHOW_BKG;
DISPLAY_ON;
while(1) {
wait_vbl_done();
}
}
Loading…
Cancel
Save