From 647d3565f4b188b52d8087e5a2d7801cfdca1f94 Mon Sep 17 00:00:00 2001 From: Starport75 Date: Wed, 9 Aug 2023 17:05:51 -0500 Subject: [PATCH] Continuing graphics work --- graphics/brin.grit | 2 +- graphics/brin.png | Bin 6853 -> 6923 bytes graphics/metr.png | Bin 1702 -> 986 bytes graphics/textBoxBG.grit | 5 + graphics/textBoxBG.png | Bin 0 -> 1488 bytes graphics/unused graphics/brin.png | Bin 0 -> 6853 bytes include/background_engine.h | 3 +- include/sprite_data.h | 5 + source/background_engine.cpp | 78 ++---------- source/main.cpp | 195 ++---------------------------- source/sprite_data.cpp | 66 ++++++++++ source/text_engine.cpp | 15 ++- 12 files changed, 109 insertions(+), 260 deletions(-) create mode 100644 graphics/textBoxBG.grit create mode 100644 graphics/textBoxBG.png create mode 100644 graphics/unused graphics/brin.png create mode 100644 include/sprite_data.h create mode 100644 source/sprite_data.cpp 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 91fc2726ba6ed2b596407936addbc152f2fcc46d..6cbf9f11fdedf1b04bc3765756dc28cd8236c871 100644 GIT binary patch literal 6923 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 literal 6853 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 W?puppKJl;lO~2Xx`rsFru>S&1DU&q- diff --git a/graphics/metr.png b/graphics/metr.png index ee3d9e8cd6654a1420556785d842074de228283e..27bae96b4632f0ee3bbde92605ff2d7436815bdd 100644 GIT binary patch delta 935 zcmV;Y16cf~4cZ5g7!(8p0000W_+m@|001yhOjJd9czBU4Eq_Js=o0_{00DGTPE!Ct z=GbNc00US_L_t(|ob8t}Zrd;vKxv>Ngu*e@vs68SD365)Q^;g+2ss5ggO>nuPhe-t z*!UEgGD$%XUhgu(Isa4s0i2S@4lt&~M@XFNLtV6p^1B!So;lILf+!^4S(RxqlIqvO>ug5T$E8*a9avg5szH zf}ouwo(%*}KCx$@Tb+1K!-U$S( ztPmXh36v$k_BPTurDBft zHsKGAsUWBSWBbfrEE96ULH2VS(y0`TQB&OfKF&k!loh)Ewnod85r5#4>b3 zMt|VpT7XOV>Tjz054>lLU7f0irp6&wSVAYpUZ0-xDqTNek(8L`zIsta3#ofu5gFi zv0Ll9axL(2CD`oMY{RVy*r?^p_ggLSaV=1_BJ|4y{MLK(U<4jM5QLAKe_f9Y#`t7d z+i<8#BR~H)f_`$tp{5%7dE3g5V_Z))^7Bvkr|VM+F8%%g3)8)EY1RX>ssI2000>D% JPDHLkV1mN2tl$6u literal 1702 zcmeHG>r)d~6h9CiArKA377*0nV;UT-i&}{aaaACswYY!?w%UaF0%OhUU=2cX!2x3h zT!nVR_+ZtJ#A7?7J?GqWe&;u5 z?%9vUDTIQF0ss&yW1|wdo8UIe=W%Bz|KR5UJiu10iY5qRh;sp`CBWdAS;|inIZc`X zn*;1jrPDyUX8_Wva`6U(fh0+z(MVC0$z(E{&6SmvG)>pn*E0-bwOVa9o84|_S$1gX zUu+Ih0)UJGVPjbM7#|XV0x)yc02lxp01KRmL?Dp>f&hvFhJjiQIL;LYk_3tZvl(a_ z7zS)MV4d+I5J^CS0D=OF0j35u4mbe>2_yxS8O$`$3@|pZv19n}3GZa|zx;1>!q^Q;Ew6ruF$Mt%>lc(rCzMJngUr#Q@B_km& z5zyz>P26CtQbsLZr9b+z?9bwJh)?v=>eXne!_gvM9NrbPU0*islco&y;Y-)st?Bkz z4GotqTXn5_GS9N}oC`lte)jj!h-Y<`Rr0e>(+Vd{?&q~UNZ#_(2~2-)P$+t3-nbNb z)ePF#Gj#>0S2wTn@zWf_+tIyg%XeP!npU<4ebDZVWtFCTOdt-Bf|}$qi`{SXD|~#Ju1j=I@7s1UBlv ztR+lJ5B3TqsPOStvBUZAR~{Y4grkc$8*q)rVY{ZA$O*Q(V(Ox%w7q>hF)Lc16!T?!M+G z&KdU1X}&JMn)Pj+H&0)1X7}i_X+?cm`x3h@M68W*iR{pvL+Tp%l;f+tlh?)ew9l}6 zX+v&{!v+VZA~pVv?uOS-?_@R=6nwOD`o-==p%t22Yab3wnuBZo`GH%1&X<+j%Nzk7 zj5Q{;SXDFJJIm!n$>!||3y<~4eOzk?SEnBKA01rZI#_c$tI1a37WTMeU5oitys@() zcSJVs$iA1UhAZ1%$dzA)XIv1j=$}exR#(qSY7lhV1}2sJ^mHsKx}2HOyK?@%9fAip z5Da-^axXrar4!!mo5m~pHU3S`Jl5#1w7R`K|9F8{*U+u?RK=EEvla7aw*}9+qRG!o oxgT5=I;wLt+Be&lgt5Pj@V2AMWXn{2rgK1*(Q#4dm#Opq0pW8hxc~qF 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 0000000000000000000000000000000000000000..056c8b5de961c4e9b2dc97116a054bf8b85a797a GIT binary patch literal 1488 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5C#Tjh5(-s*P};|8d@6u`0?XE zP=W|RlKTJu|C6L1X#c2s{E;vkKGY2#{vF?ofhIDR1o;IsI6S+N#=yW-=jq}YQZeW4 z-HUm*97J3Lo&Wux&s~@yE3`zr^v%KN>;6vr9N-(~nWdGYFMl>_-tV0*>!fGGy57ujsq#x9fpTm*4(Af7y?}z`}oi|ArSl z8!kJ?oV#2)|M-tNE5C_5>9yY8FP-!MKjT|{w%g1rO5f_YY@2@Qv0UG`cexCD|L^hk zRomR#yw%}H4wL;oW8)dO{P?~9`yb1L)!xhbyY?|;sBHMdcfp7u Z{x9PfjYi&MEsCWey`HXqF6*2UngE1dh-d%+ literal 0 HcmV?d00001 diff --git a/graphics/unused graphics/brin.png b/graphics/unused graphics/brin.png new file mode 100644 index 0000000000000000000000000000000000000000..91fc2726ba6ed2b596407936addbc152f2fcc46d GIT binary patch literal 6853 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 W?puppKJl;lO~2Xx`rsFru>S&1DU&q- literal 0 HcmV?d00001 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()); } }