From bd2ad017b469802dfd3ab2c5810bd193ea242edb Mon Sep 17 00:00:00 2001 From: alpine9000 Date: Sat, 16 Apr 2016 16:24:03 +1000 Subject: [PATCH] fade in from grey --- 028.game2/assets/bottom_section.pal | 16 ++ 028.game2/fade.c | 60 ++++++ 028.game2/fade.s | 273 ++++++++++++++++++++++++++++ 028.game2/game1.s | 32 +++- 4 files changed, 378 insertions(+), 3 deletions(-) create mode 100644 028.game2/assets/bottom_section.pal create mode 100644 028.game2/fade.c create mode 100644 028.game2/fade.s diff --git a/028.game2/assets/bottom_section.pal b/028.game2/assets/bottom_section.pal new file mode 100644 index 0000000..16305b2 --- /dev/null +++ b/028.game2/assets/bottom_section.pal @@ -0,0 +1,16 @@ +016 132 233 255 +082 000 015 255 +133 000 026 255 +210 063 006 255 +211 116 039 255 +253 174 017 255 +233 216 100 255 +016 132 233 255 +000 000 014 255 +029 192 255 255 +121 235 255 255 +071 174 192 255 +213 213 213 255 +210 000 039 255 +154 154 154 255 +000 000 000 000 \ No newline at end of file diff --git a/028.game2/fade.c b/028.game2/fade.c new file mode 100644 index 0000000..1c19c6f --- /dev/null +++ b/028.game2/fade.c @@ -0,0 +1,60 @@ +#include + +typedef struct { + unsigned char r, g, b, a; +} rgba_t; + +#define NUM_COLORS 16 + +rgba_t original[NUM_COLORS]; +rgba_t gray[NUM_COLORS]; +rgba_t progress[NUM_COLORS]; + +int +main(int argc, char** argv) +{ + FILE* fp = fopen(argv[1], "r"); + + rgba_t* p = original; + + while (fscanf(fp, "%d %d %d %d", &p->r, &p->g, &p->b, &p->a) == 4) { + p++; + } + + rgba_t* g = gray; + p = original; + + for (int i = 0; i < NUM_COLORS; i++) { + g->r = g->g = g->b = (p->r + p->g + p->b) / 3; + // printf("%d %d %d\n", g->r, g->g, g->b); + g++; + p++; + } + + for (int s = 1; s <= 16; s++) { + printf(".step%d\n", s); + for (int i = 0; i < NUM_COLORS; i++) { + int dr = ((((float)original[i].r)-(float)gray[i].r)/16.0)*s; + int dg = ((((float)original[i].g)-(float)gray[i].g)/16.0)*s; + int db = ((((float)original[i].b)-(float)gray[i].b)/16.0)*s; + + #if 0 + printf("r:%d %d %d -> %d\n" + "g:%d %d %d -> %d\n" + "b:%d %d %d -> %d\n", + original[i].r,gray[i].r, dr, gray[i].r+dr, + original[i].g,gray[i].g, dg, gray[i].g+dg, + original[i].b,gray[i].b, db, gray[i].b+db); + #endif + + printf("\tdc.w\t$%03x\n", + ((gray[i].r+dr)>>4)<<8| + ((gray[i].g+dg)>>4)<<4| + ((gray[i].b+db)>>4)); + } + } + + printf("fadeComplete:\n"); + + fclose(fp); +} diff --git a/028.game2/fade.s b/028.game2/fade.s new file mode 100644 index 0000000..549cb4d --- /dev/null +++ b/028.game2/fade.s @@ -0,0 +1,273 @@ +.step1 + dc.w $778 + dc.w $211 + dc.w $333 + dc.w $655 + dc.w $777 + dc.w $998 + dc.w $bbb + dc.w $778 + dc.w $000 + dc.w $9aa + dc.w $ccc + dc.w $899 + dc.w $ddd + dc.w $545 + dc.w $999 + dc.w $000 +.step2 + dc.w $778 + dc.w $211 + dc.w $323 + dc.w $655 + dc.w $877 + dc.w $a98 + dc.w $bba + dc.w $778 + dc.w $000 + dc.w $8aa + dc.w $ccd + dc.w $899 + dc.w $ddd + dc.w $644 + dc.w $999 + dc.w $000 +.step3 + dc.w $679 + dc.w $211 + dc.w $423 + dc.w $754 + dc.w $876 + dc.w $a97 + dc.w $cba + dc.w $679 + dc.w $000 + dc.w $8ab + dc.w $bdd + dc.w $899 + dc.w $ddd + dc.w $644 + dc.w $999 + dc.w $000 +.step4 + dc.w $689 + dc.w $211 + dc.w $422 + dc.w $754 + dc.w $976 + dc.w $a97 + dc.w $cba + dc.w $689 + dc.w $000 + dc.w $7ab + dc.w $bdd + dc.w $799 + dc.w $ddd + dc.w $734 + dc.w $999 + dc.w $000 +.step5 + dc.w $58a + dc.w $211 + dc.w $422 + dc.w $854 + dc.w $976 + dc.w $b96 + dc.w $cc9 + dc.w $58a + dc.w $000 + dc.w $7ab + dc.w $bdd + dc.w $799 + dc.w $ddd + dc.w $734 + dc.w $999 + dc.w $000 +.step6 + dc.w $58a + dc.w $311 + dc.w $522 + dc.w $853 + dc.w $975 + dc.w $b96 + dc.w $cc9 + dc.w $58a + dc.w $000 + dc.w $6ac + dc.w $add + dc.w $79a + dc.w $ddd + dc.w $834 + dc.w $999 + dc.w $000 +.step7 + dc.w $48a + dc.w $311 + dc.w $512 + dc.w $953 + dc.w $a75 + dc.w $c95 + dc.w $cc9 + dc.w $48a + dc.w $000 + dc.w $6ac + dc.w $ade + dc.w $79a + dc.w $ddd + dc.w $824 + dc.w $999 + dc.w $000 +.step8 + dc.w $48b + dc.w $311 + dc.w $512 + dc.w $943 + dc.w $a75 + dc.w $ca5 + dc.w $dc8 + dc.w $48b + dc.w $000 + dc.w $5ac + dc.w $ade + dc.w $69a + dc.w $ddd + dc.w $923 + dc.w $999 + dc.w $000 +.step9 + dc.w $48b + dc.w $301 + dc.w $612 + dc.w $942 + dc.w $a74 + dc.w $ca4 + dc.w $dc8 + dc.w $48b + dc.w $000 + dc.w $5bd + dc.w $9de + dc.w $6aa + dc.w $ddd + dc.w $923 + dc.w $999 + dc.w $000 +.step10 + dc.w $38c + dc.w $301 + dc.w $612 + dc.w $a42 + dc.w $b74 + dc.w $da4 + dc.w $dc8 + dc.w $38c + dc.w $000 + dc.w $4bd + dc.w $9de + dc.w $6aa + dc.w $ddd + dc.w $a23 + dc.w $999 + dc.w $000 +.step11 + dc.w $38c + dc.w $401 + dc.w $612 + dc.w $a42 + dc.w $b74 + dc.w $da3 + dc.w $dc7 + dc.w $38c + dc.w $000 + dc.w $4be + dc.w $9ee + dc.w $5ab + dc.w $ddd + dc.w $a13 + dc.w $999 + dc.w $000 +.step12 + dc.w $28c + dc.w $401 + dc.w $702 + dc.w $b41 + dc.w $b73 + dc.w $ea3 + dc.w $dc7 + dc.w $28c + dc.w $000 + dc.w $3be + dc.w $8ef + dc.w $5ab + dc.w $ddd + dc.w $b13 + dc.w $999 + dc.w $000 +.step13 + dc.w $28d + dc.w $401 + dc.w $702 + dc.w $b41 + dc.w $c73 + dc.w $ea2 + dc.w $dd7 + dc.w $28d + dc.w $000 + dc.w $3be + dc.w $8ef + dc.w $5ab + dc.w $ddd + dc.w $b13 + dc.w $999 + dc.w $000 +.step14 + dc.w $18d + dc.w $401 + dc.w $701 + dc.w $c41 + dc.w $c73 + dc.w $ea2 + dc.w $ed6 + dc.w $18d + dc.w $000 + dc.w $2bf + dc.w $8ef + dc.w $5ab + dc.w $ddd + dc.w $c02 + dc.w $999 + dc.w $000 +.step15 + dc.w $18e + dc.w $401 + dc.w $801 + dc.w $c40 + dc.w $c72 + dc.w $fa1 + dc.w $ed6 + dc.w $18e + dc.w $000 + dc.w $2bf + dc.w $7ef + dc.w $4ab + dc.w $ddd + dc.w $c02 + dc.w $999 + dc.w $000 +.step16 + dc.w $18e + dc.w $500 + dc.w $801 + dc.w $d30 + dc.w $d72 + dc.w $fa1 + dc.w $ed6 + dc.w $18e + dc.w $000 + dc.w $1cf + dc.w $7ef + dc.w $4ac + dc.w $ddd + dc.w $d02 + dc.w $999 + dc.w $000 +fadeComplete: diff --git a/028.game2/game1.s b/028.game2/game1.s index de117ce..a13f49d 100644 --- a/028.game2/game1.s +++ b/028.game2/game1.s @@ -55,8 +55,7 @@ MainLoop: bra SetupBoardLoop GameLoop: - ;; bsr FadeToPalette - bsr InstallColorPalette + bsr InstallNextGreyPalette move.l #FOREGROUND_SCROLL_PIXELS,foregroundScrollPixels jsr WaitVerticalBlank bsr HoriScrollPlayfield @@ -425,6 +424,28 @@ InstallGreyPalette: dbra d0,.loop rts + +InstallNextGreyPalette: + lea tileMapCopperPalettePtr,a1 + move.l fadePtr,a0 + lea fadeComplete,a2 + cmp.l a2,a0 + bge .done + add.l #2,a1 + move.l #15,d0 +.loop: + move.w (a0),(a1) + add.l #2,a0 + add.l #4,a1 + dbra d0,.loop + move.l frameCount,d0 + lsr.l #1,d0 + btst.l #0,d0 + beq .done + add.l #16*2,fadePtr +.done + rts + InstallPalette: include "out/tilemap-palette.s" rts @@ -465,7 +486,9 @@ joystick: dc.b 0 joystickpos: dc.b 0 - +fadePtr: + dc.l fade + animIndex: ds.l 16,0 deAnimIndex: @@ -551,6 +574,9 @@ greyPalette: tilemapPalette: include "tilemap-palette-table.s" +fade: + include "fade.s" + section .bss foregroundBitplanes1: ds.b IMAGESIZE*3