diff --git a/graphics/brin.grit b/graphics/brin.grit index 8fe1eed..fa3346a 100644 --- a/graphics/brin.grit +++ b/graphics/brin.grit @@ -1,4 +1,4 @@ # # Brinstar : 64x64t, 4bpp, SBB-layout, not compressed. # --gt -gB4 -mR4 -mLs +-gt -gB4 -mR4 -mLs -pe16 diff --git a/graphics/brin.png b/graphics/brin.png index 91fc272..6cbf9f1 100644 Binary files a/graphics/brin.png and b/graphics/brin.png differ diff --git a/graphics/metr.png b/graphics/metr.png index ee3d9e8..27bae96 100644 Binary files a/graphics/metr.png and b/graphics/metr.png differ diff --git a/graphics/textBoxBG.grit b/graphics/textBoxBG.grit new file mode 100644 index 0000000..6115697 --- /dev/null +++ b/graphics/textBoxBG.grit @@ -0,0 +1,5 @@ +# +# Text Box (Background) : 64x64t, 4bpp, SBB-layout, not compressed. +# +-gt -gB4 -mR4 -mLs -mp1 -ps16 -pe32 + diff --git a/graphics/textBoxBG.png b/graphics/textBoxBG.png new file mode 100644 index 0000000..056c8b5 Binary files /dev/null and b/graphics/textBoxBG.png differ diff --git a/graphics/unused graphics/brin.png b/graphics/unused graphics/brin.png new file mode 100644 index 0000000..91fc272 Binary files /dev/null and b/graphics/unused graphics/brin.png differ diff --git a/include/background_engine.h b/include/background_engine.h index f55609a..330e4f9 100644 --- a/include/background_engine.h +++ b/include/background_engine.h @@ -1,7 +1,6 @@ #ifndef BACKGROUND_ENGINE_H #define BACKGROUND_ENGINE_H -int back_main(); -void back_frame(); +void background_frame(); #endif \ No newline at end of file diff --git a/include/sprite_data.h b/include/sprite_data.h new file mode 100644 index 0000000..b19ffac --- /dev/null +++ b/include/sprite_data.h @@ -0,0 +1,5 @@ +#include + +void load_background(); +void load_textbox_background(); +void load_testroid(OBJ_ATTR obj_buffer[]); diff --git a/source/background_engine.cpp b/source/background_engine.cpp index 14aa3d5..982cfb2 100644 --- a/source/background_engine.cpp +++ b/source/background_engine.cpp @@ -1,74 +1,20 @@ #include -#define CBB_0 0 -#define SBB_0 28 +#include -#define CROSS_TX 15 -#define CROSS_TY 10 +#include "sprite_data.h" -uint frame_count = 0; +#define CBB 0 +#define SBB 24 +int x, y; -BG_POINT bg0_pt = {0, 0}; -SCR_ENTRY *bg0_map = se_mem[SBB_0]; - -u32 tx, ty, se_curr, se_prev; - -uint se_index(uint tx, uint ty, uint pitch) +void background_frame() { - uint sbb = ((tx >> 5) + (ty >> 5) * (pitch >> 5)); - return sbb * 1024 + ((tx & 31) + (ty & 31) * 32); -} + vid_vsync(); + key_poll(); -void init_map() -{ - int ii, jj; + x += key_tri_horz(); + y += key_tri_vert(); - // initialize a background - REG_BG0CNT = BG_CBB(CBB_0) | BG_SBB(SBB_0) | BG_REG_64x64; - REG_BG0HOFS = 0; - REG_BG0VOFS = 0; - - // (1) create the tiles: - const TILE tile = - { - {0x11111111, 0x01111111, 0x01111111, 0x01111111, - 0x01111111, 0x01111111, 0x01111111, 0x00000001}}; - tile_mem[CBB_0][0] = tile; - - // (2) create a palette - pal_bg_bank[0][1] = RGB15(31, 0, 0); - - // (3) Create a map: - SCR_ENTRY *pse = bg0_map; - for (jj = 0; jj < 32 * 32; jj++) - *pse++ = SE_PALBANK(ii) | 0; -} - -int back_main() -{ - init_map(); - return 0; -} - -void back_frame() -{ - vid_vsync(); - - key_poll(); - - // (4) Moving around - if (frame_count % 2 == 0) - { - bg0_pt.x += 1; - bg0_pt.y += 1; - } - se_curr = se_index(tx, ty, 64); - if (se_curr != se_prev) - { - bg0_map[se_prev]--; - bg0_map[se_curr]++; - se_prev = se_curr; - } - - REG_BG_OFS[0] = bg0_pt; // write new position - frame_count++; + REG_BG0HOFS= x; + REG_BG0VOFS= y; } \ No newline at end of file diff --git a/source/main.cpp b/source/main.cpp index 6d53ace..0416994 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -14,6 +14,8 @@ #include "background_engine.h" #include "pokemon_party.h" #include "script_array.h" +#include "sprite_data.h" +#include /*TODO: -------- @@ -51,121 +53,19 @@ TESTING: -------- */ -// This file is autogenerated from the file in the graphics folder -#include "metr.h" - OBJ_ATTR obj_buffer[128]; OBJ_AFFINE *obj_aff_buffer = (OBJ_AFFINE *)obj_buffer; -// byte party_data[441] = {0x8A, 0x91, 0x88, 0x92, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x6, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0xFF, 0x25, 0xDA, 155, 0x0, 0x21, 0x2B, 0x0, 0x0, 0x25, 0xDA, 0x0, 0x0, 0x87, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x72, 0x21, 0x23, 0x1E, 0x0, 0x0, 0x46, 0x0, 0x85, 0x81, 0x5, 0x0, 0x0, 0x0, 0x13, 0x0, 0x13, 0x0, 0x0A, 0x0, 0x9, 0x0, 0x0B, 0x0, 0x0B, 0x0, 0x0A, 0x9B, 0x0, 0x21, 0x2B, 0x0, 0x0, 0x25, 0xDA, 0x0, 0x0, 0x87, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x72, 0x21, 0x23, 0x1E, 0x0, 0x0, 0x46, 0x0, 0x85, 0x81, 0x5, 0x0, 0x0, 0x0, 0x13, 0x0, 0x13, 0x0, 0x0A, 0x0, 0x9, 0x0, 0x0B, 0x0, 0x0B, 0x0, 0x0A, 0x9B, 0x0, 0x21, 0x2B, 0x0, 0x0, 0x25, 0xDA, 0x0, 0x0, 0x87, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x72, 0x21, 0x23, 0x1E, 0x0, 0x0, 0x46, 0x0, 0x85, 0x81, 0x5, 0x0, 0x0, 0x0, 0x13, 0x0, 0x13, 0x0, 0x0A, 0x0, 0x9, 0x0, 0x0B, 0x0, 0x0B, 0x0, 0x0A, 0x9B, 0x0, 0x21, 0x2B, 0x0, 0x0, 0x25, 0xDA, 0x0, 0x0, 0x87, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x72, 0x21, 0x23, 0x1E, 0x0, 0x0, 0x46, 0x0, 0x85, 0x81, 0x5, 0x0, 0x0, 0x0, 0x13, 0x0, 0x13, 0x0, 0x0A, 0x0, 0x9, 0x0, 0x0B, 0x0, 0x0B, 0x0, 0x0A, 0x9B, 0x0, 0x21, 0x2B, 0x0, 0x0, 0x25, 0xDA, 0x0, 0x0, 0x87, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x72, 0x21, 0x23, 0x1E, 0x0, 0x0, 0x46, 0x0, 0x85, 0x81, 0x5, 0x0, 0x0, 0x0, 0x13, 0x0, 0x13, 0x0, 0x0A, 0x0, 0x9, 0x0, 0x0B, 0x0, 0x0B, 0x0, 0x0A, 0x9B, 0x0, 0x21, 0x2B, 0x0, 0x0, 0x25, 0xDA, 0x0, 0x0, 0x87, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x72, 0x21, 0x23, 0x1E, 0x0, 0x0, 0x46, 0x0, 0x85, 0x81, 0x5, 0x0, 0x0, 0x0, 0x13, 0x0, 0x13, 0x0, 0x0A, 0x0, 0x9, 0x0, 0x0B, 0x0, 0x0B, 0x0, 0x0A, 0x8A, 0x91, 0x88, 0x92, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x8A, 0x91, 0x88, 0x92, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x8A, 0x91, 0x88, 0x92, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x8A, 0x91, 0x88, 0x92, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x8A, 0x91, 0x88, 0x92, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x8A, 0x91, 0x88, 0x92, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x82, 0x98, 0x8D, 0x83, 0x80, 0x90, 0x94, 0x88, 0x8B, 0x50, 0x50, 0x82, 0x98, 0x8D, 0x83, 0x80, 0x90, 0x94, 0x88, 0x8B, 0x50, 0x50, 0x82, 0x98, 0x8D, 0x83, 0x80, 0x90, 0x94, 0x88, 0x8B, 0x50, 0x50, 0x82, 0x98, 0x8D, 0x83, 0x80, 0x90, 0x94, 0x88, 0x8B, 0x50, 0x50, 0x82, 0x98, 0x8D, 0x83, 0x80, 0x90, 0x94, 0x88, 0x8B, 0x50, 0x50, 0x82, 0x98, 0x8D, 0x83, 0x80, 0x90, 0x94, 0x88, 0x8B, 0x50, 0x50}; - -/*byte party_data[444] = { - 0x8A, 0x91, 0x88, 0x92, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x06, 0x9B, 0x13, 0xA1, 0xA1, 0xA1, 0xA1, 0xFF, 0x25, 0xDA, - - 0x8B, 0x00, 0x37, 0x35, 0x21, 0x2B, 0x25, 0xDA, 0x00, 0x00, 0xA7, 0x00, 0x46, 0x00, 0x5C, 0x00, 0x44, 0x00, 0x28, 0x00, 0x46, 0xFA, 0xAA, 0x1F, 0x1E, 0x00, 0x00, 0x45, 0x00, 0x85, 0x81, 0x05, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x13, 0x00, 0x0A, 0x00, 0x09, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0A, - 0xC9, 0x00, 0x21, 0x27, 237, 0x00, 0x25, 0xDA, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x11, 0x23, 0x1E, 0x00, 0x00, 0x46, 0x00, 0x82, 0x82, 0x02, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, - 0xA1, 0x00, 0x21, 0x00, 0x00, 0x00, 0x25, 0xDA, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x8B, 0x23, 0x00, 0x00, 0x00, 0x46, 0x00, 0x83, 0x82, 0x03, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x08, 0x00, 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, - 0x97, 0x00, 0x21, 0x00, 0x00, 0x00, 0x25, 0xDA, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x87, 0x21, 0x00, 0x00, 0x00, 0x46, 0x00, 0x82, 0x82, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0D, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, - 0xFB, 0x00, 0x21, 0x00, 0x00, 0x00, 0x25, 0xDA, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x34, 0x21, 0x00, 0x00, 0x00, 0x46, 0x00, 0x83, 0x82, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0F, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0x07, - 0xA1, 0x00, 0x21, 0x00, 0x00, 0x00, 0x25, 0xDA, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x23, 0x00, 0x00, 0x00, 0x46, 0x00, 0x82, 0x82, 0x02, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x07, 0x00, 0x06, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, - - 0x8A, 0x91, 0x88, 0x92, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, - 0x8A, 0x91, 0x88, 0x92, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, - 0x8A, 0x91, 0x88, 0x92, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, - 0x8A, 0x91, 0x88, 0x92, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, - 0x8A, 0x91, 0x88, 0x92, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, - 0x8A, 0x91, 0x88, 0x92, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, - - 0x82, 0x98, 0x8D, 0x83, 0x80, 0x90, 0x94, 0x88, 0x8B, 0x50, 0x50, - 0x91, 0x80, 0x93, 0x93, 0x80, 0x93, 0x80, 0x50, 0x50, 0x50, 0x50, - 0xF1, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, 0xE1, 0xE2, 0x50, 0x50, - 0x92, 0x84, 0x8D, 0x93, 0x91, 0x84, 0x93, 0x50, 0x50, 0x50, 0x50, - 0x92, 0x84, 0x8D, 0x93, 0x91, 0x84, 0x93, 0x50, 0x50, 0x50, 0x50, - 0xE3, 0xE6, 0xE7, 0xF3, 0xF2, 0xF4, 0x7F, 0x50, 0x50, 0x50, 0x50, - - 0x00, 0x00, 0x00}; -*/ Pokemon_Party party = Pokemon_Party(); text_engine main_text = text_engine(); -//Pokemon party[6] = {}; - -vu8 pkmn[480] = { - 0x5C, 0xF2, 0x9B, 0x70, 0x9B, 0x2A, 0x81, 0xE4, 0xBB, 0xC6, 0xBC, 0xBF, 0xCC, 0xCE, 0xFF, 0x00, - 0x00, 0x00, 0x02, 0x02, 0xBB, 0xCF, 0xCD, 0xCE, 0xC3, 0xC8, 0xFF, 0x00, 0x8B, 0x07, 0x00, 0x00, - 0x0E, 0xD8, 0x1A, 0x94, 0xC7, 0xD8, 0x1A, 0x94, 0xC7, 0xD8, 0x1A, 0x94, 0xC7, 0x60, 0x1B, 0xB6, - 0xBD, 0xC2, 0x51, 0x85, 0xC7, 0xD8, 0x1A, 0x94, 0x2A, 0xD8, 0x1A, 0x94, 0xC7, 0xD8, 0x1A, 0x94, - 0xC8, 0xD8, 0x1A, 0x94, 0xC7, 0xD8, 0x1A, 0x94, 0xC7, 0xD8, 0x1A, 0x94, 0xC7, 0xD8, 0x1A, 0x94, - - 0xD1, 0xA8, 0x64, 0x28, 0x9B, 0x2A, 0x81, 0xE4, 0xBC, 0xBB, 0xCC, 0xCE, 0xFF, 0xCE, 0xFF, 0x00, - 0x00, 0x00, 0x02, 0x02, 0xBB, 0xCF, 0xCD, 0xCE, 0xC3, 0xC8, 0xFF, 0x00, 0x8B, 0x07, 0x00, 0x00, - 0x83, 0x82, 0xE5, 0xCC, 0x4A, 0x82, 0xE5, 0xCC, 0x4A, 0x82, 0xE5, 0xCC, 0xA7, 0x82, 0xE5, 0xCC, - 0x4A, 0x82, 0xE5, 0xCC, 0x45, 0x82, 0xE5, 0xCC, 0x4A, 0x3A, 0xE4, 0xEE, 0x30, 0x98, 0xAE, 0xDD, - 0x4A, 0x82, 0xE5, 0xCC, 0x4A, 0x82, 0xE5, 0xCC, 0x4A, 0x82, 0xE5, 0xCC, 0x4A, 0x82, 0xE5, 0xCC, - - 0x4E, 0x5B, 0xB7, 0xF3, 0x9B, 0x2A, 0x81, 0xE4, 0xBD, 0xBB, 0xCC, 0xCE, 0xBF, 0xCC, 0xFF, 0x00, - 0x00, 0x00, 0x02, 0x02, 0xBB, 0xCF, 0xCD, 0xCE, 0xC3, 0xC8, 0xFF, 0x00, 0x8B, 0x07, 0x00, 0x00, - 0xD5, 0xC9, 0x37, 0x35, 0xAF, 0x6B, 0x7D, 0x06, 0xD5, 0x71, 0x36, 0x17, 0xD5, 0x71, 0x36, 0x17, - 0xD5, 0x71, 0x36, 0x17, 0xD5, 0x71, 0x36, 0x17, 0x1C, 0x71, 0x36, 0x17, 0xD5, 0x71, 0x36, 0x17, - 0xD5, 0x71, 0x36, 0x17, 0x38, 0x71, 0x36, 0x17, 0xD5, 0x71, 0x36, 0x17, 0xDA, 0x71, 0x36, 0x17, - - 0x5F, 0x80, 0x16, 0xBB, 0x9B, 0x2A, 0x81, 0xE4, 0xBE, 0xBB, 0xD1, 0xC8, 0xFF, 0xCC, 0xFF, 0x00, - 0x00, 0x00, 0x02, 0x02, 0xBB, 0xCF, 0xCD, 0xCE, 0xC3, 0xC8, 0xFF, 0x00, 0x8B, 0x07, 0x00, 0x00, - 0xC4, 0xAA, 0x97, 0x5F, 0xC4, 0xAA, 0x97, 0x5F, 0xC4, 0xAA, 0x97, 0x5F, 0x29, 0xAA, 0x97, 0x5F, - 0xC4, 0xAA, 0x97, 0x5F, 0xCB, 0xAA, 0x97, 0x5F, 0xC4, 0x12, 0x96, 0x7D, 0xBE, 0xB0, 0xDC, 0x4E, - 0xC4, 0xAA, 0x97, 0x5F, 0x0D, 0xAA, 0x97, 0x5F, 0xC4, 0xAA, 0x97, 0x5F, 0xC4, 0xAA, 0x97, 0x5F, - - 0x14, 0x43, 0x7A, 0xCE, 0x9B, 0x2A, 0x81, 0xE4, 0xBF, 0xCC, 0xC3, 0xC5, 0xFF, 0xCC, 0xFF, 0x00, - 0x00, 0x00, 0x02, 0x02, 0xBB, 0xCF, 0xCD, 0xCE, 0xC3, 0xC8, 0xFF, 0x00, 0x8B, 0x07, 0x00, 0x00, - 0x46, 0x69, 0xFB, 0x2A, 0x8F, 0x69, 0xFB, 0x2A, 0x8F, 0x69, 0xFB, 0x2A, 0x8F, 0xD1, 0xFA, 0x08, - 0xF5, 0x73, 0xB0, 0x3B, 0x8F, 0x69, 0xFB, 0x2A, 0x62, 0x69, 0xFB, 0x2A, 0x8F, 0x69, 0xFB, 0x2A, - 0x80, 0x69, 0xFB, 0x2A, 0x8F, 0x69, 0xFB, 0x2A, 0x8F, 0x69, 0xFB, 0x2A, 0x8F, 0x69, 0xFB, 0x2A, - - 0xF5, 0x91, 0x98, 0x00, 0x9B, 0x2A, 0x81, 0xE4, 0xC0, 0xCC, 0xBB, 0xC8, 0xC5, 0xFF, 0xFF, 0x00, - 0x00, 0x00, 0x02, 0x02, 0xBB, 0xCF, 0xCD, 0xCE, 0xC3, 0xC8, 0xFF, 0x00, 0x8B, 0x07, 0x00, 0x00, - 0xA7, 0xBB, 0x19, 0xE4, 0x6E, 0xBB, 0x19, 0xE4, 0x6E, 0xBB, 0x19, 0xE4, 0x6E, 0x03, 0x18, 0xC6, - 0x14, 0xA1, 0x52, 0xF5, 0x6E, 0xBB, 0x19, 0xE4, 0x6E, 0xBB, 0x19, 0xE4, 0x6E, 0xBB, 0x19, 0xE4, - 0x6E, 0xBB, 0x19, 0xE4, 0x83, 0xBB, 0x19, 0xE4, 0x6E, 0xBB, 0x19, 0xE4, 0x61, 0xBB, 0x19, 0xE4}; - -void load_sprite(void) -{ - // Load tiles and palette of sprite into video and palete RAM - memcpy32(&tile_mem[4][0], metrTiles, metrTilesLen / 4); - memcpy32(pal_obj_mem, metrPal, metrPalLen / 4); - - oam_init(obj_buffer, 128); - - OBJ_ATTR *metr = &obj_buffer[0]; - obj_set_attr(metr, - ATTR0_SQUARE, // Square, regular sprite - ATTR1_SIZE_64, // 64x64 pixels, - ATTR2_PALBANK(0) | 0); // palette index 0, tile index 0 - - // Set position - obj_set_pos(metr, 0, 0); - - oam_copy(oam_mem, obj_buffer, 1); // Update first OAM object -} - -/*void load_pokemon(byte *party_array, int gen) -{ - int party_size = party_array[11]; - for (int i = 0; i < party_size; i++) - { - party[i].convert_from_gen(2, i, &party_array[0]); - poke_rand.next_frame(); - party[i].convert_to_gen_three(poke_rand.get_rand()); - } -} -*/ - int main(void) { // Initalizations linkGPIO->reset(); - REG_DISPCNT = DCNT_MODE0 | DCNT_BG0 | DCNT_OBJ | DCNT_OBJ_1D; + REG_DISPCNT = DCNT_MODE0 | DCNT_BG0 | DCNT_BG2 | DCNT_BG3 | DCNT_OBJ | DCNT_OBJ_1D; irq_init(NULL); irq_enable(II_VBLANK); @@ -174,100 +74,23 @@ int main(void) initalize_memory_locations(); rand_set_seed(0x12162001); - back_main(); add_script_party_var(party); - // load_sprite(); + + load_background(); + load_textbox_background(); + load_testroid(obj_buffer); // MAIN LOOP while (1) { key_poll(); rand_next_frame(); - back_frame(); + background_frame(); main_text.next_frame(); + oam_copy(oam_mem, obj_buffer, 1); } } -/* -{ - bool print = false; - char str[128] = {'\0'}; - int arr = 0; - int frame = 0; - while (1) - { - u16 keys = ~REG_KEYS & KEY_ANY; - poke_rand.next_frame(); - - vid_vsync(); - key_poll(); - if (key_released(KEY_UP)) - { - arr++; - if (arr == 14) - { - arr = 0; - } - } - if (key_released(KEY_DOWN)) - { - arr--; - if (arr == -1) - { - arr = 13; - } - } - if (key_released(KEY_A)) - { - load_pokemon(&party_data[0], 2); - insert_pokemon(&party[0], 6); - print = true; - } - - if (key_released(KEY_START)) - { - setup(); - loop(&party_data[0]); - } - - tte_erase_screen(); - - tte_set_pos(0, 0); - printValueAt(memory_section_array[arr] + 0xFF4); - - tte_set_pos(0, 10); - sprintf(str, "[%c-%X] R:%X", mem_name, arr, poke_rand.get_rand()); - tte_write(str); - - tte_set_pos(0, 20); - sprintf(str, "%X %X %X %X %X %X %X %X", party_data[0], party_data[1], party_data[2], party_data[3], party_data[4], party_data[5], party_data[6], party_data[7]); - tte_write(str); - if (print) - { - tte_set_pos(0, 30); - tte_write("Pokemon Injected!"); - tte_set_pos(0, 40); - for (int i = 0; i < 80; i++) - { - tte_write(intToHex(party[0].get_gen_3_data(i)).c_str()); - tte_write(" "); - } - tte_set_pos(0, 120); - for (int i = 0; i < 49; i++) - { - tte_write(intToHex(party[0].get_unencrypted_data(i)).c_str()); - tte_write(" "); - } - } - - tte_set_pos(0, 30); - - frame++; - VBlankIntrWait(); - } -} -} -*/ /*Credits: https://github.com/laqieer/libsavgba https://github.com/rodri042/gba-link-connection diff --git a/source/sprite_data.cpp b/source/sprite_data.cpp new file mode 100644 index 0000000..e617426 --- /dev/null +++ b/source/sprite_data.cpp @@ -0,0 +1,66 @@ +#include +#include +#include "sprite_data.h" + + + +#include "brin.h" +void load_background(){ + int CBB = 0; + int SBB = 1; + // Load palette + memcpy(pal_bg_mem, brinPal, brinPalLen); + // Load tiles into CBB 0 + memcpy(&tile_mem[CBB][0], brinTiles, brinTilesLen); + // Load map into SBB 30 + memcpy(&se_mem[SBB][0], brinMap, brinMapLen); + + // set up BG0 for a 4bpp 32x32t map, using + // using charblock CBB and screenblock SBB + REG_BG0CNT= BG_CBB(CBB) | BG_SBB(SBB) | BG_4BPP | BG_REG_32x32 | BG_PRIO(3); +} + +#include "textboxBG.h" +void load_textbox_background(){ + int CBB = 1; + int SBB = 9; + // Load palette + memcpy(pal_bg_mem + 16, textBoxBGPal, textBoxBGPalLen); + // Load tiles into CBB 0 + memcpy(&tile_mem[CBB][0], textBoxBGTiles, textBoxBGTilesLen); + // Load map into SBB 0 + memcpy(&se_mem[SBB][0], textBoxBGMap, textBoxBGMapLen); + + // set up BG0 for a 4bpp 32x32t map, using + // using charblock CBB and screenblock SBB + REG_BG2VOFS = 96; + REG_BG2CNT = BG_CBB(CBB) | BG_SBB(SBB) | BG_4BPP | BG_REG_32x32 | BG_PRIO(2); +} + +#include "metr.h" // 41 tiles +void load_testroid(OBJ_ATTR obj_buffer[]){ + // Text box + // (1) Places the tiles of a 4bpp boxed sprite + // into LOW obj memory (cbb == 4) + memcpy(&tile_mem[4][0], metrTiles, metrTilesLen); + memcpy(pal_obj_mem, metrPal, metrPalLen); + + // (2) Initialize all sprites + //oam_init(obj_buffer, 128); + + int x= 0, y= 0; + u32 tid= 0, pb= 0; // (3) tile id, pal-bank + OBJ_ATTR *testroid= &obj_buffer[0]; + + obj_set_attr(testroid, + ATTR0_SQUARE, // Square, regular sprite + ATTR1_SIZE_64x64, // 64x64p, + ATTR2_PALBANK(pb) | tid); // palbank 0, tile 0 + + // (4) position sprite (redundant here; the _real_ position + // is set further down + obj_set_pos(testroid, x, y); + obj_hide(testroid); + obj_unhide(testroid, 0); + +} diff --git a/source/text_engine.cpp b/source/text_engine.cpp index 634eb1e..6d7284b 100644 --- a/source/text_engine.cpp +++ b/source/text_engine.cpp @@ -2,24 +2,28 @@ #include #include "text_engine.h" +#include + +#define TEXT_CBB 3 +#define TEXT_SBB 28 const int H_MAX = 240; const int V_MAX = 160; -const int LEFT = 16; +const int LEFT = 8; const int RIGHT = H_MAX - LEFT; -const int TOP = 122; +const int TOP = 120; const int BOTTOM = V_MAX; uint char_count = 0; text_engine::text_engine() { - OBJ_ATTR *objs = &oam_mem[127]; - tte_init_obj_default(objs); - + // Load the TTE + tte_init_se(3, BG_CBB(TEXT_CBB)|BG_SBB(TEXT_SBB)|BG_PRIO(0), 0xF000, CLR_PURPLE, 0, &fwf_default, NULL); tte_set_margins(LEFT, TOP, RIGHT, BOTTOM); tte_set_pos(LEFT, TOP); + // Set default variables curr_line = script[0]; frame_count = 0; } @@ -33,6 +37,7 @@ void text_engine::next_frame() { char_count++; tte_erase_rect(LEFT, TOP, RIGHT, BOTTOM); + tte_set_ink(CLR_RED); tte_write(curr_line.get_text().substr(0, char_count).c_str()); } }