From f652b2a9c76194ee285e001e6b04a7dc585e8993 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Fri, 23 Apr 2021 23:05:06 +0200 Subject: First steps to replace the input overlay VRAM and rom consumption was too big with the previous input overlay. Trying to separate button sprites into multiple states. Sprites can now be composed of multiple objects. --- src/gba-buttons.c | 616 +++++++++--------------------------------------------- 1 file changed, 102 insertions(+), 514 deletions(-) (limited to 'src/gba-buttons.c') diff --git a/src/gba-buttons.c b/src/gba-buttons.c index 7d40031..cbf6f8b 100644 --- a/src/gba-buttons.c +++ b/src/gba-buttons.c @@ -1,536 +1,66 @@ // 1bpp packed u32 gba_btn_a_data[] = { - 0x00000000, 0x00000000, 0x00000000, 0x000000c0, - 0x00000000, 0x00000003, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x30080484, 0x4242c242, - 0x0c102021, 0x42424342, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x42060c34, 0xc830c000, - 0x4260302c, 0x130c0300, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0xc0300804, 0x844242c2, - 0x030c1020, 0x21424243, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x4242040c, 0x38f0c000, - 0x42422030, 0x1c0f0300, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000080, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00c43008, 0x04844242, - 0x00230c10, 0x20214242, 0x00000000, 0x00000000, - 0x80000000, 0x00000000, 0xc2424404, 0x0832c000, - 0x43422220, 0x104c0300, 0x01000000, 0x00000000, - 0x00000000, 0x00000000, 0x80000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00408000, 0x00000080, 0x80800001, - 0x00000000, 0x00000080, 0x00000000, 0x00020100, - 0x00000000, 0x00000000, 0x00c03008, 0x04844242, - 0x00030c10, 0x20214242, 0x00000000, 0x00000000, - 0x38000000, 0x00000080, 0xc2424404, 0x0830c000, - 0x43422220, 0x100c0300, 0x1c000000, 0x00000001, - 0x40200000, 0x00000000, 0x00008080, 0x80000000, - 0x00000000, 0x00000000, 0x02040000, 0x00000000, - 0x00000000, 0x20400000, 0x00008080, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x04020000, - 0x00000000, 0x00000000, 0x00c03008, 0x04844242, - 0x00030c10, 0x20214242, 0x00000000, 0x00000000, - 0x0c000000, 0x00000000, 0xc2424404, 0x0830c000, - 0x43422220, 0x100c0300, 0x30000000, 0x00000000, - 0x00201000, 0x00000000, 0x00000080, 0x80000000, - 0x00000000, 0x00000000, 0x00040800, 0x00000000, - 0x00000000, 0x20000000, 0x00008000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x04000000, - 0x00000000, 0x00000000, 0x00c03008, 0x04844242, - 0x00030c10, 0x20214242, 0x00000000, 0x00000000, - 0x04000000, 0x00000000, 0xc2424404, 0x0830c000, - 0x43422220, 0x100c0300, 0x20000000, 0x00000000, - 0x00001000, 0x00000000, 0x00000000, 0x80000000, - 0x00000000, 0x00000000, 0x00000800, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00c03008, 0x04844242, - 0x00030c10, 0x20214242, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0xc2424404, 0x0830c000, - 0x43422220, 0x100c0300, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0xc0300804, 0x844242c2, 0x030c1020, 0x21424243, + 0x42440408, 0x30c00000, 0x42222010, 0x0c030000, }; u32 gba_btn_b_data[] = { - 0x00000000, 0x00000000, 0x00000000, 0x000000c0, - 0x00000000, 0x00000003, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x300804c4, 0x42c24242, - 0x0c102021, 0x42414242, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0xc2060c34, 0xc830c000, - 0x4160302c, 0x130c0300, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0xc0300804, 0xc442c242, - 0x030c1020, 0x21424142, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x42c2040c, 0x38f0c000, - 0x42412030, 0x1c0f0300, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000080, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00c43008, 0x04c442c2, - 0x00230c10, 0x20214241, 0x00000000, 0x00000000, - 0x80000000, 0x00000000, 0x4242c404, 0x0832c000, - 0x42422120, 0x104c0300, 0x01000000, 0x00000000, - 0x00000000, 0x00000000, 0x80000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00408000, 0x00000080, 0x80800001, - 0x00000000, 0x00000080, 0x00000000, 0x00020100, - 0x00000000, 0x00000000, 0x00c03008, 0x04c442c2, - 0x00030c10, 0x20214241, 0x00000000, 0x00000000, - 0x38000000, 0x00000080, 0x4242c404, 0x0830c000, - 0x42422120, 0x100c0300, 0x1c000000, 0x00000001, - 0x40200000, 0x00000000, 0x00008080, 0x80000000, - 0x00000000, 0x00000000, 0x02040000, 0x00000000, - 0x00000000, 0x20400000, 0x00808000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x04020000, - 0x00000000, 0x00000000, 0x00c03008, 0x04c442c2, - 0x00030c10, 0x20214241, 0x00000000, 0x00000000, - 0x0c000000, 0x00000000, 0x4242c404, 0x0830c000, - 0x42422120, 0x100c0300, 0x30000000, 0x00000000, - 0x00201000, 0x00000000, 0x00000000, 0x80800000, - 0x00000000, 0x00000000, 0x00040800, 0x00000000, - 0x00000000, 0x20000000, 0x00800000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x04000000, - 0x00000000, 0x00000000, 0x00c03008, 0x04c442c2, - 0x00030c10, 0x20214241, 0x00000000, 0x00000000, - 0x04000000, 0x00000000, 0x4242c404, 0x0830c000, - 0x42422120, 0x100c0300, 0x20000000, 0x00000000, - 0x00001000, 0x00000000, 0x00000000, 0x00800000, - 0x00000000, 0x00000000, 0x00000800, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00c03008, 0x04c442c2, - 0x00030c10, 0x20214241, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x4242c404, 0x0830c000, - 0x42422120, 0x100c0300, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0xc0300804, 0xc442c242, 0x030c1020, 0x21424142, + 0x42c40408, 0x30c00000, 0x42212010, 0x0c030000, }; -u32 gba_btn_up_data[] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0xf80888c8, 0xe8888888, - 0x0f080809, 0x0b080808, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x8818e810, 0xe0000000, - 0x080c0b04, 0x03000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00f80888, 0xc8e88888, - 0x000f0808, 0x090b0808, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x888818f0, 0xe0000000, - 0x08080c07, 0x03000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000080, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x0002f808, 0x88c8e888, - 0x00200f08, 0x08090b08, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x88888810, 0xe0000000, - 0x08080804, 0x03000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000080, 0x00000000, 0x00808000, - 0x00000000, 0x00000080, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x0100f808, 0x88c8e888, - 0x40000f08, 0x08090b08, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x88888810, 0xe0000000, - 0x08080804, 0x03000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00004080, 0x00000000, 0x80800000, - 0x00000000, 0x00000080, 0x00000000, 0x00000100, - 0x00000000, 0x00000000, 0x0000f808, 0x88c8e888, - 0x00000f08, 0x08090b08, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x88888810, 0xe0000000, - 0x08080804, 0x03000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00200000, 0x00000080, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00020000, - 0x00000000, 0x00000000, 0x0000f808, 0x88c8e888, - 0x00000f08, 0x08090b08, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x88888810, 0xe0000000, - 0x08080804, 0x03000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x0000f808, 0x88c8e888, - 0x00000f08, 0x08090b08, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x88888810, 0xe0000000, - 0x08080804, 0x03000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, +u32 gba_btn_updown_data[] = { + 0x00f01010, 0x90d01010, 0x001f1011, 0x13171111, + 0x101020c0, 0x00000000, 0x11110807, 0x00000000, }; -u32 gba_btn_down_data[] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00e01088, 0x888888e8, - 0x00030408, 0x0808080b, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0xc88808f8, 0x08f80000, - 0x0908080f, 0x080f0000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x0000e010, 0x88888888, - 0x00000304, 0x08080808, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0xe8c88808, 0xf8f80000, - 0x0b090808, 0x0f0f0000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x000000e0, 0x10888888, - 0x00000003, 0x04080808, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x88e8c888, 0x08f80200, - 0x080b0908, 0x080f2000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x80000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x000000e0, 0x10888888, - 0x00000003, 0x04080808, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x88e8c888, 0x08f80001, - 0x080b0908, 0x080f0040, 0x00000000, 0x00000000, - 0x80000000, 0x00000000, 0x00808000, 0x00000000, - 0x80000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x000000e0, 0x10888888, - 0x00000003, 0x04080808, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x88e8c888, 0x08f80000, - 0x080b0908, 0x080f0000, 0x00000000, 0x00000000, - 0x80400000, 0x00000000, 0x00008080, 0x00000000, - 0x80000000, 0x00000000, 0x00010000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x000000e0, 0x10888888, - 0x00000003, 0x04080808, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x88e8c888, 0x08f80000, - 0x080b0908, 0x080f0000, 0x00000000, 0x00000000, - 0x00002000, 0x00000000, 0x00000000, 0x80000000, - 0x00000000, 0x00000000, 0x00000200, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x000000e0, 0x10888888, - 0x00000003, 0x04080808, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x88e8c888, 0x08f80000, - 0x080b0908, 0x080f0000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, +u32 gba_btn_leftright_data[] = { + 0x000000f8, 0x0888c8e8, 0x0000000f, 0x1020202f, + 0xc88808f8, 0x00000000, 0x2020100f, 0x00000000, }; -u32 gba_btn_left_data[] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x0000f808, 0x88c8e8c8, - 0x00000f10, 0x20202f20, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x8808f808, 0xf8000000, - 0x20302f10, 0x0f000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x000000f8, 0x0888c8e8, - 0x0000000f, 0x1020202f, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0xc88808f8, 0xf8000000, - 0x2020301f, 0x0f000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000400, 0xf80888c8, - 0x00000000, 0x0f102020, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0xe9c88808, 0xf8000400, - 0x2f202010, 0x0f000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x01020000, 0xf80888c8, - 0x00000000, 0x0f102020, 0x00000000, 0x00000000, - 0xc0000000, 0x00000000, 0xe8c88808, 0xf8000002, - 0x2f202010, 0x0f000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x01000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000080, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x01000000, 0xf80888c8, - 0x00000000, 0x0f102020, 0x00000000, 0x00000000, - 0x60000000, 0x00000000, 0xe8c88808, 0xf8000000, - 0x2f202010, 0x0f000000, 0x00000000, 0x00000000, - 0x00800000, 0x00000000, 0x01000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00004000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0xf80888c8, - 0x00000000, 0x0f102020, 0x00000000, 0x00000000, - 0x10000000, 0x00000000, 0xe8c88808, 0xf8000000, - 0x2f202010, 0x0f000000, 0x00000000, 0x00000000, - 0x00004000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0xf80888c8, - 0x00000000, 0x0f102020, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0xe8c88808, 0xf8000000, - 0x2f202010, 0x0f000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, +u32 gba_btn_l_data[] = { + 0xfc028181, 0x818101ff, 0xff808080, 0x808380ff, }; -u32 gba_btn_right_data[] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x0000f008, 0x0404f404, - 0x00001f10, 0x11131713, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x040cf408, 0xf0000000, - 0x11101f10, 0x1f000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x000000f0, 0x080404f4, - 0x0000001f, 0x10111317, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x04040cf8, 0xf0000000, - 0x1311101f, 0x1f000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0xf0080404, - 0x00002000, 0x1f101113, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0xf4040408, 0xf0000000, - 0x97131110, 0x1f002000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0xf0080404, - 0x80400000, 0x1f101113, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0xf4040408, 0xf0000000, - 0x17131110, 0x1f000040, 0x03000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x80000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000001, - 0x00000000, 0x00000000, 0x00000000, 0xf0080404, - 0x80000000, 0x1f101113, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0xf4040408, 0xf0000000, - 0x17131110, 0x1f000000, 0x06000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x80000000, 0x00000000, 0x00010000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000200, - 0x00000000, 0x00000000, 0x00000000, 0xf0080404, - 0x00000000, 0x1f101113, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0xf4040408, 0xf0000000, - 0x17131110, 0x1f000000, 0x08000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000200, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0xf0080404, - 0x00000000, 0x1f101113, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0xf4040408, 0xf0000000, - 0x17131110, 0x1f000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, +u32 gba_btn_r_data[] = { + 0xff018181, 0x818101ff, 0x3f408182, 0x818280ff, }; -u32 gba_btn_l_data[] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x0000fc02, 0x01010101, - 0x0000ff00, 0x01010107, 0x00000302, 0x02020202, - 0x00000000, 0x00000000, 0x01ff01ff, 0x00000000, - 0x00ff00ff, 0x00000000, 0x02030203, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x000000fc, 0x02010101, - 0x000000ff, 0x00010101, 0x00000003, 0x02020202, - 0x00000000, 0x00000000, 0x0101ffff, 0x00000000, - 0x0700ffff, 0x00000000, 0x02020303, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000080, 0x00000040, 0x00001000, 0xfc020101, - 0x00000000, 0xff000101, 0x00000000, 0x03020202, - 0x00000000, 0x00000000, 0x010101ff, 0x00000000, - 0x010700ff, 0x00000000, 0x02020203, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00204000, 0x00000030, 0x10100000, 0xfc020101, - 0x00000000, 0xff000101, 0x00000000, 0x03020202, - 0x00000000, 0x00000000, 0x010101ff, 0x00000000, - 0x010700ff, 0x00000000, 0x02020203, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000010, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x10200000, 0x00000018, 0x10000000, 0xfc020101, - 0x00000000, 0xff000101, 0x00000000, 0x03020202, - 0x00000000, 0x00000000, 0x010101ff, 0x00000000, - 0x010700ff, 0x00000000, 0x02020203, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000010, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x10000000, 0x00000004, 0x00000000, 0xfc020101, - 0x00000000, 0xff000101, 0x00000000, 0x03020202, - 0x00000000, 0x00000000, 0x010101ff, 0x00000000, - 0x010700ff, 0x00000000, 0x02020203, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0xfc020101, - 0x00000000, 0xff000101, 0x00000000, 0x03020202, - 0x00000000, 0x00000000, 0x010101ff, 0x00000000, - 0x010700ff, 0x00000000, 0x02020203, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, +u32 gba_btn_ab_shadow_data[] = { + 0x00020204, 0x040830c0, 0x00404020, 0x20100c03, }; -u32 gba_btn_r_data[] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x0000c040, 0x40404040, 0x0000ff00, 0x60a060a0, - 0x00003f40, 0x80808080, 0x00000000, 0x00000000, - 0x40c040c0, 0x00000000, 0x00ff00ff, 0x00000000, - 0x80ff80ff, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x000000c0, 0x40404040, 0x000000ff, 0x0060a060, - 0x0000003f, 0x40808080, 0x00000000, 0x00000000, - 0x4040c0c0, 0x00000000, 0xa000ffff, 0x00000000, - 0x8080ffff, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0xc0404040, 0x00000000, 0xff0060a0, - 0x00000800, 0x3f408080, 0x00000001, 0x00000002, - 0x404040c0, 0x00000000, 0x60a000ff, 0x00000000, - 0x808080ff, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0xc0404040, 0x00000000, 0xff0060a0, - 0x08080000, 0x3f408080, 0x00040200, 0x0000000c, - 0x404040c0, 0x00000000, 0x60a000ff, 0x00000000, - 0x808080ff, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000008, 0x00000000, 0x00000000, - 0x00000000, 0xc0404040, 0x00000000, 0xff0060a0, - 0x08000000, 0x3f408080, 0x08040000, 0x00000018, - 0x404040c0, 0x00000000, 0x60a000ff, 0x00000000, - 0x808080ff, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000008, 0x00000000, 0x00000000, - 0x00000000, 0xc0404040, 0x00000000, 0xff0060a0, - 0x00000000, 0x3f408080, 0x08000000, 0x00000020, - 0x404040c0, 0x00000000, 0x60a000ff, 0x00000000, - 0x808080ff, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0xc0404040, 0x00000000, 0xff0060a0, - 0x00000000, 0x3f408080, 0x00000000, 0x00000000, - 0x404040c0, 0x00000000, 0x60a000ff, 0x00000000, - 0x808080ff, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, +u32 gba_btn_up_shadow_data[] = { + 0x00000010, 0x1020c000, 0x00000010, 0x10080700, }; -u32 gba_btn_start_data[] = { - 0x00000000, 0x00000000, 0x00000000, 0x0000f008, - 0x00000000, 0x00001f20, 0x00000000, 0x00000000, - 0x00000080, 0x80008000, 0xf8f000bb, 0x91929300, - 0x3f1f009b, 0x2a1b2a00, 0x00000003, 0x01010100, - 0x00000000, 0x00000000, 0x00000000, 0x000000f0, - 0x00000000, 0x0000001f, 0x00000000, 0x00000000, - 0x00000080, 0x80008000, 0x08f000bb, 0x91929300, - 0x201f009b, 0x2a1b2a00, 0x00000003, 0x01010100, - 0x00000000, 0x00000000, 0x00000000, 0x001000f0, - 0x00000000, 0x0110001f, 0x00000000, 0x00000000, - 0x00000080, 0x80008000, 0x0af000bb, 0x91929300, - 0xa01f009b, 0x2a1b2a00, 0x00000003, 0x01010100, - 0x00000000, 0x00000000, 0x00000004, 0x080000f0, - 0x00000141, 0x2000001f, 0x00000000, 0x00000000, - 0x80000080, 0x80008000, 0x09f000bb, 0x91929300, - 0x201f009b, 0x2a1b2a00, 0x03000003, 0x01010100, - 0x00000000, 0x00000000, 0x00000204, 0x000000f0, - 0x00018140, 0x0000001f, 0x00000000, 0x00000000, - 0xc0000080, 0x80008000, 0x08f000bb, 0x91929300, - 0x201f009b, 0x2a1b2a00, 0x06000003, 0x01010100, - 0x00000000, 0x00000000, 0x00000200, 0x000000f0, - 0x00018000, 0x0000001f, 0x00000000, 0x00000000, - 0x40000080, 0x80008000, 0x08f000bb, 0x91929300, - 0x201f009b, 0x2a1b2a00, 0x04000003, 0x01010100, - 0x00000000, 0x00000000, 0x00000000, 0x000000f0, - 0x00000000, 0x0000001f, 0x00000000, 0x00000000, - 0x00000080, 0x80008000, 0x08f000bb, 0x91929300, - 0x201f009b, 0x2a1b2a00, 0x00000003, 0x01010100, +u32 gba_btn_down_shadow_data[] = { + 0x00000000, 0x10f00000, 0x00000000, 0x101f0000, }; -u32 gba_btn_select_data[] = { - 0x00000000, 0x00000000, 0x00000000, 0x0000f008, - 0x00000000, 0x00001f20, 0x00000000, 0x00000000, - 0x000000e0, 0x6080e000, 0xf8f0002e, 0x2622ee00, - 0x3f1f00ee, 0x2622ee00, 0x0000000e, 0x04040400, - 0x00000000, 0x00000000, 0x00000000, 0x000000f0, - 0x00000000, 0x0000001f, 0x00000000, 0x00000000, - 0x000000e0, 0x6080e000, 0x08f0002e, 0x2622ee00, - 0x201f00ee, 0x2622ee00, 0x0000000e, 0x04040400, - 0x00000000, 0x00000000, 0x00000000, 0x001000f0, - 0x00000000, 0x0110001f, 0x00000000, 0x00000000, - 0x000000e0, 0x6080e000, 0x0af0002e, 0x2622ee00, - 0xa01f00ee, 0x2622ee00, 0x0000000e, 0x04040400, - 0x00000000, 0x00000000, 0x00000004, 0x080000f0, - 0x00000141, 0x2000001f, 0x00000000, 0x00000000, - 0x800000e0, 0x6080e000, 0x09f0002e, 0x2622ee00, - 0x201f00ee, 0x2622ee00, 0x0300000e, 0x04040400, - 0x00000000, 0x00000000, 0x00000204, 0x000000f0, - 0x00018140, 0x0000001f, 0x00000000, 0x00000000, - 0xc00000e0, 0x6080e000, 0x08f0002e, 0x2622ee00, - 0x201f00ee, 0x2622ee00, 0x0600000e, 0x04040400, - 0x00000000, 0x00000000, 0x00000200, 0x000000f0, - 0x00018000, 0x0000001f, 0x00000000, 0x00000000, - 0x400000e0, 0x6080e000, 0x08f0002e, 0x2622ee00, - 0x201f00ee, 0x2622ee00, 0x0400000e, 0x04040400, - 0x00000000, 0x00000000, 0x00000000, 0x000000f0, - 0x00000000, 0x0000001f, 0x00000000, 0x00000000, - 0x000000e0, 0x6080e000, 0x08f0002e, 0x2622ee00, - 0x201f00ee, 0x2622ee00, 0x0000000e, 0x04040400, +u32 gba_btn_leftright_shadow_data[] = { + 0x00000000, 0x000008f8, 0x00000000, 0x2020100f, +}; + +u32 gba_btn_lr_shadow_data[] = { + 0x00000000, 0x000001ff, 0x00000000, 0x000080ff, +}; + +u32 gba_btn_startselect_data[] = { + 0x0000f804, 0xfcf80000, 0x00001f20, 0x3f1f0000, + 0x000000f8, 0x04f80000, 0x0000001f, 0x201f0000, +}; + +u32 gba_btn_fx_downup[] = { + 0x00000000, 0x00000000, 0x04000000, 0x00000000, + 0x40000100, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000201, 0x00000000, + 0x00008000, 0x01010000, 0x00000001, 0x00000000, + 0x00000000, 0x80000000, 0x00000001, 0x00000000, + 0x00000000, 0x00010100, 0x00000001, 0x02000000, + 0x00000000, 0x00400000, 0x00000000, 0x00000000, + 0x00000000, 0x00000001, 0x00000000, 0x00040000, }; typedef struct SpriteAnimation { @@ -538,10 +68,11 @@ typedef struct SpriteAnimation { size_t n_frames; } SpriteAnimation; -typedef enum {BTN_STATE_IDLE, BTN_STATE_PRESSED} BtnState; +typedef enum {BTN_STATE_IDLE, BTN_STATE_PRESSED, BTN_STATE_RELEASED, BTN_STATE_HOLD} BtnState; static size_t btn_state_idle[] = {0}; -static size_t btn_state_pressed[] = {16, 16, 32, 32, 48, 48, 64, 64, 80, 96}; +// static size_t btn_state_pressed[] = {16, 16, 32, 32, 48, 48, 64, 64, 80, 96}; +static size_t btn_state_pressed[] = {0}; static SpriteAnimation *animation_states[] = { &(SpriteAnimation){ @@ -553,3 +84,60 @@ static SpriteAnimation *animation_states[] = { .n_frames = sizeof(btn_state_pressed) / sizeof(size_t), }, }; + +typedef struct AnimationEntry { + int x_offset; + int y_offset; + int tile_offset; + // NOTE: Maybe this should be a part of an animation? + // For example, hidden state, h/v flip. + u16 hidden; + // u16 obj_attr_1; + // u16 obj_attr_2; +} AnimationEntry; + +typedef struct ObjState { + size_t id; + int x; + int y; + u32 *data; + size_t base_tile; + size_t n_tiles; + size_t frames; + u16 obj_attr_0; + u16 obj_attr_1; + u16 obj_attr_2; +} ObjState; + +AnimationEntry *btn_down_animation[] = { + &(AnimationEntry[]){ + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 1, 0, 0}, + {0, 1, 0, 0}, + {0, 2, 0, 0}, + {0, 2, 0, 0}, + {0, 2, 0, 0}, + {0, 2, 0, 0}, + }, + &(AnimationEntry[]){ + {0, 11, 0, 0}, + {0, 11, 0, 0}, + {0, 11, 0, 0}, + {0, 11, 0, 0}, + {0, 11, 0, 0}, + {0, 11, 0, 0}, + {0, 11, 0, 0}, + {0, 11, 0, 0}, + }, + &(AnimationEntry[]){ + {-8, 17, 0, 1}, + {-8, 17, 0, 0}, + {-8, 17, 4, 0}, + {-8, 17, 4, 0}, + {-8, 17, 8, 0}, + {-8, 17, 8, 0}, + {-8, 17, 12, 0}, + {-8, 17, 12, 1}, + }, +}; -- cgit v1.2.1