From 14f6f924723dc8cb17ab5deb0aabb637854993ec Mon Sep 17 00:00:00 2001 From: Zack Buhman Date: Thu, 15 Jun 2023 16:46:40 +0000 Subject: [PATCH] initial --- .gitignore | 5 ++++ DSC09311_256.data | 5 ++++ DSC09311_256.data.pal | Bin 0 -> 768 bytes DSC09311_256.png | Bin 0 -> 27433 bytes Makefile | 37 ++++++++++++++++++++++++++ gba-lib | 1 + main.c | 59 ++++++++++++++++++++++++++++++++++++++++++ main.gba | Bin 0 -> 40712 bytes palette.py | 7 +++++ 9 files changed, 114 insertions(+) create mode 100644 .gitignore create mode 100644 DSC09311_256.data create mode 100644 DSC09311_256.data.pal create mode 100644 DSC09311_256.png create mode 100644 Makefile create mode 120000 gba-lib create mode 100644 main.c create mode 100755 main.gba create mode 100644 palette.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..660b6ae --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +*.sav +*.map +*.o + +*.elf diff --git a/DSC09311_256.data b/DSC09311_256.data new file mode 100644 index 0000000..7b526bc --- /dev/null +++ b/DSC09311_256.data @@ -0,0 +1,5 @@ +У}j}и۔j}УRI}jIIIIgg}̊R}}gwwР}}}}}}ʤն}}}}}־ն}[}}÷ϣЁI3j÷ϣ[III÷϶IIIj÷ʶj\PIw÷j33I÷I3IR÷̐I3RwõIIR÷⣣jIR÷ՐjI}÷õ̐jjøwww̐jj}ø~\PP\\g~̐jwï|||lqq~~~~wjʵ|y~~~~~|qqjá|l~||||ʷiii|||ll|ʭiL:&ZkOiii||գʷ|iiF8O.iOODD⣐÷|iilliilâ.L&M␐÷|ylli|Âiin됐÷yli||Ñ|yÔ÷|||ʷ|yʏ÷ʭv÷޷÷yy~۰ô÷~~flyyyʷ޴yʷyvK,KfyO۰Ǧâ÷yvvfKfKfyKKv༦ūð÷yfKff]fyfKyyyƦzzxzzzxzʷʿyfyfyfyy׺zzrccrrrurrrxx޿ʷʿyyyyyfyyyদuu_d_uudddddrrxzÿʿyyyylyyť__UUXXXccxx{ttttttʿϿyyyyffyyثmTTUUUXccxttttaaaa{ʧyyvyffy߳÷mTGUddXXstttaaaaaat{||yf]]]]]]yɹ÷nWEGUurcxtteaaaaaa{{t{||iKKK,,,KK]yܹ÷mm_Uuzz؃tteaaaaaa{{ttaatiDDDff]]fffyfKly÷Wmttutteeeaaaaa{taaaaaSaiifff]]]]]fyy~~÷STa{u؃tteeaaSSSataaaaaSSaaSt||||fffff]vy~~õmaSudtteeeSSSSSaaaaaSSaaaSamk||||illffff~ʰnWS_uudreeeSSSSSSaaaaaSSaaSSSVmnnnnk||iiiiiffly䆺۷nMGT_teeeSSSSSaaaaSSaaSaaSSVWWnnn|||iliffyyWϷnmTGTurdz𙃃teeVSSSSSaaaaSS_a_aaaSSVWZZnn||lllyyy|--;{E;ṹGh""    C4Γ+dHxNhSVE=:VeoeeeeeVVVVVVEECEEEC6"""""+++"""   #@   66%@T5 _ C=ڽkQJJJJJJ3.#ZbY3N%% &8//NheSEVVVeeVVVVEVVEEEEEEEEEEEEE=*"++!!"    .'    6=*@.5T <+ )a`Q9OOJ9998EmSpY0&%%%::%%%&NNNkVEEVeeVVVVVVVVEVVEEEEEEEEEEEEEE6!++!!!"" * @    *=*{_ T 4ɛhQ9OO983l$pbb%&%)VotaSE::78NNNeeooeVVVVVVVVEEEEEEEEEEEEEEEEEEGE=!++!!!!!!!   * '    45)_ G +"\N9N9R}nG_Tpbb7E:=o{aeNk{tteVVVVVVSVSVSSSEEEEEEEEEEEEESSSSSE=+++4+!!!+!! * ''    u< +%ݱpRNNL[Yp[FVVVttߗoeeVSVEVEEEEEEEESSEEEEEEEEEEEESSSTTTTE*+++4!!!!++!    @    *83Q-m6YppP.P\wqetu_tإ::ooStzuu_TTT_rzzuTG**hQ9:VėdrTȳĻĻij_!$hQQ9&V66ŋHua==_{rŻm$rrrddddrssssssscssssscUUUXXXH<++<<    Kgww\ /hQQ9&e*6ŃauCS{{ŻtdrrrrddddssssssssssssscUUXXXXUH++<4   Jww\. &hQ9/&t*ťe{taCEƻmټssrrrrsrssssssssssssscXUHUUXU<+4<+4 3qqJ h99&%tŻtauCaƻaUsssssssssssssxxsscccccXHHUUUH<+44-.q~\9N9&7t ƺtatVtƻWdcssssssssxxxxxssccccccXHHHUUH<+44 #\w~qJN/ +:{ tƗƺaatSaƺƻĻׄcsssssssxxxxxssscXXXccXHHHUUH<++4 ,,,3. +J~~~l.>/e:a{ƫaeƺƻĻĻӓccsssssxxxxxxssccUXXXXXXHHUUH<++4,?(?KJJ3.\~J8/4EatƻmĻĻĻӓccssxxxxxxxxxsscXXXXXXXXHHUUH<44]B?^^^^PJ. +#J~q#//+FfT1ID=sxtBPBB|F-RyRJ1!tbE*(=W z3OO-0P%R!YG(9mjH#RgkJ~J>yGcZUqC^*g2NJ&gb zNl`;eR!d1oQb$NZOI&wB6HrP-ZABn(MK**!MS4RxO;A{8OgB$aRDVbiNK#}PFZSKSXfn9V3ABo zgi<|JUvY<2O;})TUSDE=S51mmF^E=2f>}p!U0Z@$L3>+KV`5)kV{36>RBd5kj9NsX zS`2q%N|{|FXJ=}jViu@j0G47*m19?zW19f}fI&wT^zDla!j4m6?{Bpq-+poSdhfm%EsWqo19`n{ck7 zkeQ{iwx5#3pMb2Tq_U-;si&*Sr$D`>h{vayu&%PSuB@!Hzq_)c$FHNjx3tf_Y|^{3 z#J|42!M@1Axz)m|&BngR$;Zve#?s5f+|9_%(bd+_$kEf#;nc$A*3sA6-r3vO;MvyS y;@{}t*68En*w$4==18}?C$IO@ZhbmX_4f1n`tbPt|N8v-|NsAF5<#B; literal 0 HcmV?d00001 diff --git a/DSC09311_256.png b/DSC09311_256.png new file mode 100644 index 0000000000000000000000000000000000000000..01ada7d92c5fd15c39a50d5d92bd379747402d64 GIT binary patch literal 27433 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 $@ + +%.glyph.o: %.glyph + $(BUILD_BINARY_O) + +%.data.o: %.data + $(BUILD_BINARY_IMAGE_O) + +%.data.pal.o: %.data.pal + $(BUILD_BINARY_IMAGE_O) diff --git a/gba-lib b/gba-lib new file mode 120000 index 0000000..2d8868e --- /dev/null +++ b/gba-lib @@ -0,0 +1 @@ +../gba-lib \ No newline at end of file diff --git a/main.c b/main.c new file mode 100644 index 0000000..ad5e46e --- /dev/null +++ b/main.c @@ -0,0 +1,59 @@ +extern unsigned int _binary_DSC09311_256_data_pal_start; +extern unsigned int _binary_DSC09311_256_data_pal_end; +extern unsigned int _binary_DSC09311_256_data_pal_size; + +extern unsigned int _binary_DSC09311_256_data_start; +extern unsigned int _binary_DSC09311_256_data_end; +extern unsigned int _binary_DSC09311_256_data_size; + +#include "io_reg.h" +#include "vram.h" +#include "register_values.h" +#include "copy.h" +#include "nib.h" +#include "type.h" +#include "oam.h" + +void _start(void) +{ + int height = 240; + int width = 160; + + u8 * pal = (u8*)&_binary_DSC09311_256_data_pal_start; + u16 * _pram = (u16 *)&pram.bg[0][0]; + for (int color = 0; color < 256; color++) { + int r = pal[color * 3 + 0] >> 3; + int g = pal[color * 3 + 1] >> 3; + int b = pal[color * 3 + 2] >> 3; + _pram[color] = PRAM_RGB15(r, g, b); + } + + u32 _vram; + + for (int y = 0; y < height; y++) { + for (int x = 0; x < width; x++) { + u8 index = ((u8 *)(&_binary_DSC09311_256_data_start))[y * width + x]; + + switch (x & 0x3) { + case 0: _vram = index; break; + case 1: _vram |= index << 8; break; + case 2: _vram |= index << 16; break; + case 3: _vram |= index << 24; + *((u32 *)(0x6000000 + (y * width + x))) = _vram; + break; + } + } + } + + while ((io_reg.VCOUNT & 0xff) < 161); + + io_reg.DISPCNT = + ( DISPCNT__BG2 + | DISPCNT__BG_MODE_4 + | DISPCNT__FRAMEBUFFER(0) + ); + + while (1) { + io_reg.HALTCNT = 0; + }; +} diff --git a/main.gba b/main.gba new file mode 100755 index 0000000000000000000000000000000000000000..330cbf4584bb33fb86ee22ba51d2f89dd915c973 GIT binary patch literal 40712 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

<}&=tiRD-DX>4teK6U(ms!nMboui9A{e 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 AN&o-= literal 0 HcmV?d00001 diff --git a/palette.py b/palette.py new file mode 100644 index 0000000..6727deb --- /dev/null +++ b/palette.py @@ -0,0 +1,7 @@ +f = open("DSC09311-256.data.pal", 'rb') +b = f.read() + + +def grouper(iterable, n): + args = [iter(iterable)] * n + return zip(*args, strict=True)