@@ -0,0 +1,259 @@
JASC-PAL
0100
256
0 0 0
8 8 8
17 17 17
24 24 21
0 0 0
21 21 21
33 33 33
41 41 41
0 0 0
41 41 41
49 49 49
57 57 57
0 0 0
57 57 57
65 65 65
73 73 73
0 0 0
73 73 73
81 81 81
89 89 89
0 0 0
89 89 89
97 97 97
105 105 105
0 0 0
105 105 105
135 135 135
165 165 165
0 0 0
161 161 161
187 187 187
255 255 255
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
109 109 109
170 170 170
255 255 255
@@ -68,7 +68,7 @@ light.ltil\
border.stil snow.stil keys.stil\
test.room\
idle.ani walking.ani running.ani sliding.ani jumping.ani falling.ani walljump.ani dangling.ani crouching.ani\
sprite.pal.i keys.pal.i\
sprite.pal.i keys.pal.i light.pal.i\
blit.i vis.i

RESS = $(patsubst %,$(RESDIR)/%,$(RES))
@@ -138,7 +138,7 @@ $(RESDIR)/%.til : $(DATADIR)/%.gif $(gifr) $(bytesc) $(bitsc)
# light tileset

$(RESDIR)/%.ltil : $(DATADIR)/%.gif $(gifr) $(bytesc) $(bitsc)
$(gifr) $(TFLAGS) -f $< -n 0 | $(bytesc) $(TFLAGS) -w 128 -h 128 | $(bitsc) $(TFLAGS) -p -b 2 -o $(RESDIR)/$*.r
$(gifr) $(TFLAGS) -f $< -n 0 | $(bytesc) $(TFLAGS) -w 32 -h 8 | $(bitsc) $(TFLAGS) -p -b 2 -o $(RESDIR)/$*.r
touch $@


@@ -177,7 +177,7 @@ $(RESDIR)/%.ani : $(DATADIR)/%.gif $(gifr) $(spriteas) $(bitsc)
touch $@


# sprite palette
# sprite and light palettes

$(RESDIR)/%.pal.i : $(DATADIR)/%.pal $(palc)
echo .segment \"rodata\" > $@
Binary file not shown.
BIN +0 Bytes (100%) rem.sfc
Binary file not shown.
@@ -254,12 +254,13 @@ light_frame:

light_dma:

stz reg_vmainc
lda #$80
sta reg_vmainc

ldx #vram::bg2
stx reg_vmadd

ldx #$1800
ldx #$1900
stx reg_dmapx

ldx dst_addr_base
@@ -62,7 +62,7 @@ zerobyte:
;; int ppu state

.macro ppu_init
mov reg_bgmode, #$08 | setup::bgmode
mov reg_bgmode, #00 | setup::bgmode

mov reg_bgxsc + $00, #(((vram::bg0 / $400) << $2) | $0)
mov reg_bgxsc + $01, #(((vram::bg1 / $400) << $2) | $0)
@@ -209,13 +209,16 @@ tileset_init:
dma_cgram_memcpy $00, #$60, #(.loword(data_tileset_1) + $2020), #^data_tileset_1, #$20
dma_cgram_memcpy $00, #$70, #(.loword(data_tileset_2) + $2020), #^data_tileset_2, #$20

dma_cgram_memcpy $00, #$00, #(.loword(data_light) + $1000), #^data_light, #$8
dma_cgram_memcpy $00, #$00, #.loword(light_palette), #^light_palette, #$40

dma_vram_memcpy2 $00, #vram::tileset0, #.loword(data_tileset_0), #^data_tileset_0, #$2000
dma_vram_memcpy2 $00, #vram::tileset1, #.loword(data_tileset_1), #^data_tileset_1, #$2000
dma_vram_memcpy2 $00, #vram::tileset2, #.loword(data_tileset_2), #^data_tileset_2, #$2000

dma_vram_memcpy2 $00, #vram::lighttiles, #.loword(data_light), #^data_light, #$1000
dma_vram_memcpy2 $00, #vram::lighttiles + $0000, #(.loword(data_light) + $00), #^data_light, #$10
dma_vram_memcpy2 $00, #vram::lighttiles + $0800, #(.loword(data_light) + $10), #^data_light, #$10
dma_vram_memcpy2 $00, #vram::lighttiles + $1000, #(.loword(data_light) + $20), #^data_light, #$10
dma_vram_memcpy2 $00, #vram::lighttiles + $1800, #(.loword(data_light) + $30), #^data_light, #$10

;; key is a 16x16 sprite

@@ -314,6 +317,9 @@ title_screen:

jsr sound_test_2

;; dma_vram_memseth $00, #vram::bg2, #$00, #($20 * $1d)


jsr fadein

;; reset the paused flag
@@ -22,15 +22,15 @@
bg1 .res $400
bg2 .res $400
debugbg .res $400
lighttiles .res $800
debugtiles .res $280

unused1 .res $800 - $280
lighttiles .res $1000

;; 24k

spritetiles .res $1000
bogus .res $1000

debugtiles .res $280

bogus .res $800 - $280

;; 32k

@@ -6,6 +6,13 @@
#include "getext.h"
#include "imgheader.h"

int brighten(int i)
{
i = i + i / 2;
if (i > 255) i = 255;
return i;
}

int main(int argc, char *argv[])
{
int tilewidth = 8;
@@ -159,22 +166,31 @@ int main(int argc, char *argv[])

for(int n = 0; n < (1 << planes); ++n) {
unsigned short w =
(h.palette[n * 3 + (p << planes) * 3 + 0] / 8)
| ((h.palette[n * 3 + (p << planes) * 3 + 1] / 8) << 5)
| ((h.palette[n * 3 + (p << planes) * 3 + 2] / 8) << 10);
(brighten(h.palette[n * 3 + (p << planes) * 3 + 0]) / 8)
| ((brighten(h.palette[n * 3 + (p << planes) * 3 + 1]) / 8) << 5)
| ((brighten(h.palette[n * 3 + (p << planes) * 3 + 2]) / 8) << 10);
fputc(w, fo);
fputc(w >> 8, fo);
}

for(int n = 0; n < (1 << planes); ++n) {
unsigned short w =
(h.palette[n * 3 + (p << planes) * 3 + 0] * 3 / 55)
| ((h.palette[n * 3 + (p << planes) * 3 + 1] * 3 / 55) << 5)
| ((h.palette[n * 3 + (p << planes) * 3 + 2] * 3 / 55) << 10);
(h.palette[n * 3 + (p << planes) * 3 + 0] / 8)
| ((h.palette[n * 3 + (p << planes) * 3 + 1] / 8) << 5)
| ((h.palette[n * 3 + (p << planes) * 3 + 2] / 8) << 10);
fputc(w, fo);
fputc(w >> 8, fo);
}

/* for(int n = 0; n < (1 << planes); ++n) { */
/* unsigned short w = */
/* (h.palette[n * 3 + (p << planes) * 3 + 0] * 3 / 55) */
/* | ((h.palette[n * 3 + (p << planes) * 3 + 1] * 3 / 55) << 5) */
/* | ((h.palette[n * 3 + (p << planes) * 3 + 2] * 3 / 55) << 10); */
/* fputc(w, fo); */
/* fputc(w >> 8, fo); */
/* } */

}

free(buffer);
@@ -11,12 +11,12 @@ int main()

printf(".word ");

for(int ii = 0; ii < 16; ++ii) {
for(int ii = 0; ii < 32; ++ii) {
int r, g, b;
scanf("%i %i %i", &r, &g, &b);
unsigned short p = (r / 8) + ((g / 8) << 5) + ((b / 8) << 10);
printf("$%04x", p);
if(ii < 15) printf(", ");
if(ii < 31) printf(", ");
}

}
@@ -354,6 +354,8 @@ int main(int argc, char *argv[])
= (firsttile >= 4 ? BG_PRIORITY_BIT : 0)
+ (firsttile >= 2 ? BG_LIGHT_PALETTE_BIT : BG_DARK_PALETTE_BIT)
+ stile[firsttile];

// background layer
roomdata[i + 1 * ROOM_WIDTH * ROOM_HEIGHT]
= (secondtile >= 4 ? BG_PRIORITY_BIT : 0)
+ (secondtile >= 2 ? BG_LIGHT_PALETTE_BIT : BG_DARK_PALETTE_BIT)
@@ -29,7 +29,7 @@ void vistable()
int new_vis, new_light;

new_vis = clamp(from_vis + to_vis, 10) + 4;
new_light = clamp(to_light, 15);
new_light = clamp(new_vis + to_light - 8, 15); //clamp(to_light, 15);

printf("$%02x", new_light + new_vis * 16);