ref: 3c0b42f530470895636fead3fd1f4a909ce09a2c
author: Jacob Moody <moody@posixcafe.org>
date: Thu Mar 2 22:19:07 EST 2023
add very simple sprite example
--- /dev/null
+++ b/mkfile
@@ -1,0 +1,9 @@
+objtype=arm
+</$objtype/mkfile
+
+OFILES=\
+ sprite.$O\
+
+TARG=sprite
+
+</sys/src/games/gba/mkrom
--- /dev/null
+++ b/sprite.c
@@ -1,0 +1,69 @@
+#include <u.h>
+
+u16int tiles[16] = {
+ 0x0000,0x0000,0x0000,0x0000,0x1001,0x0100,0x1001,0x0000,
+ 0x1111,0x0100,0x1001,0x0100,0x1001,0x0100,0x0000,0x0000,
+};
+
+u16int pal[256] = {
+ 0x0000,0x0010,0x0200,0x0210,0x4000,0x4010,0x4200,0x6318,
+ 0x4210,0x001F,0x03E0,0x03FF,0x7C00,0x7C1F,0x7FE0,0x7FFF,
+ 0x0004,0x0007,0x000B,0x000F,0x0013,0x0017,0x001B,0x001F,
+ 0x0080,0x00E0,0x0160,0x01E0,0x0260,0x02E0,0x0360,0x03E0,
+ 0x0084,0x00E7,0x016B,0x01EF,0x0273,0x02F7,0x037B,0x03FF,
+ 0x1000,0x1C00,0x2C00,0x3C00,0x4C00,0x5C00,0x6C00,0x7C00,
+ 0x1004,0x1C07,0x2C0B,0x3C0F,0x4C13,0x5C17,0x6C1B,0x7C1F,
+ 0x1080,0x1CE0,0x2D60,0x3DE0,0x4E60,0x5EE0,0x6F60,0x7FE0,
+ 0x0842,0x0C63,0x14A5,0x1CE7,0x2529,0x2D6B,0x35AD,0x3DEF,
+ 0x4631,0x4E73,0x56B5,0x5EF7,0x6739,0x6F7B,0x77BD,0x7FFF,
+ 0x001F,0x007F,0x00FF,0x017F,0x01FF,0x027F,0x02FF,0x037F,
+ 0x03FF,0x03FC,0x03F8,0x03F4,0x03F0,0x03EC,0x03E8,0x03E4,
+ 0x03E0,0x0FE0,0x1FE0,0x2FE0,0x3FE0,0x4FE0,0x5FE0,0x6FE0,
+ 0x7FE0,0x7F80,0x7F00,0x7E80,0x7E00,0x7D80,0x7D00,0x7C80,
+ 0x7C00,0x7C03,0x7C07,0x7C0B,0x7C0F,0x7C13,0x7C17,0x7C1B,
+ 0x7C1F,0x701F,0x601F,0x501F,0x401F,0x301F,0x201F,0x101F,
+ 0x001F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0421,0x0842,0x0C63,0x1084,0x14A5,0x18C6,0x1CE7,
+ 0x2108,0x2529,0x294A,0x2D6B,0x318C,0x35AD,0x39CE,0x3DEF,
+ 0x4210,0x4631,0x4A52,0x4E73,0x5294,0x56B5,0x5AD6,0x5EF7,
+ 0x6318,0x6739,0x6B5A,0x6F7B,0x739C,0x77BD,0x7BDE,0x7FFF,
+};
+
+void
+blit(void)
+{
+ u16int *palram;
+ u16int *tileram;
+ uchar *ioram;
+ int i;
+
+ palram = (u16int*)0x05000200;
+ tileram = (u16int*)0x06010000;
+ ioram = (uchar*)0x04000000;
+ for(i = 0; i < 256; i++)
+ palram[i] = pal[i];
+ for(i = 0; i < 16; i++)
+ tileram[i] = tiles[i];
+
+ ioram[0] = 0x40;
+ ioram[1] = 0x10;
+}
+
+void
+gbamain(void)
+{
+ blit();
+ for(;;)
+ ;
+}