Basic.pp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527
  1. unit basic;
  2. interface
  3. uses
  4. ctypes, nds9, scrolling, TextBackgrounds, RotBackgrounds, Multilayer;
  5. procedure Text256x256();
  6. procedure Text256x512();
  7. procedure Text512x256();
  8. procedure Text512x512();
  9. procedure ExRot128x128();
  10. procedure ExRot256x256();
  11. procedure ExRot512x512();
  12. procedure ExRot1024x1024();
  13. procedure Rot128x128();
  14. procedure Rot256x256();
  15. procedure Rot512x512();
  16. procedure Rot1024x1024();
  17. procedure Bmp8_128x128();
  18. procedure Bmp8_256x256();
  19. procedure Bmp8_512x256();
  20. procedure Bmp8_512x512();
  21. procedure Bmp8_512x1024();
  22. procedure Bmp8_1024x512();
  23. procedure Bmp16_128x128();
  24. procedure Bmp16_512x256();
  25. procedure Bmp16_256x256();
  26. procedure Bmp16_512x512();
  27. implementation
  28. procedure Text256x256();
  29. var
  30. bg: cint;
  31. begin
  32. videoSetMode(MODE_0_2D);
  33. vramSetBankA(VRAM_A_MAIN_BG);
  34. bg := bgInit(0, BgType_Text8bpp, BgSize_T_256x256, 0,1);
  35. dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles));
  36. dmaCopy(@Layer256x256Map, bgGetMapPtr(bg), Layer256x256MapLen);
  37. dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal));
  38. scroll(bg, 256, 256);
  39. end;
  40. procedure Text256x512();
  41. var
  42. bg: cint;
  43. begin
  44. videoSetMode(MODE_0_2D);
  45. vramSetBankA(VRAM_A_MAIN_BG);
  46. bg := bgInit(0, BgType_Text8bpp, BgSize_T_256x512, 0,1);
  47. dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles));
  48. dmaCopy(@Layer256x512Map, bgGetMapPtr(bg), Layer256x512MapLen);
  49. dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal));
  50. scroll(bg, 256, 512);
  51. end;
  52. procedure Text512x256();
  53. var
  54. bg: cint;
  55. map: pcuint16;
  56. iy, ix: integer;
  57. begin
  58. videoSetMode(MODE_0_2D);
  59. vramSetBankA(VRAM_A_MAIN_BG);
  60. bg := bgInit(0, BgType_Text8bpp, BgSize_T_512x256, 0, 1);
  61. dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles));
  62. dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal));
  63. map := pcuint16(bgGetMapPtr(bg));
  64. for iy := 0 to 31 do
  65. begin
  66. //first the left half
  67. dmaCopy(@Layer512x256Map + iy * 64 * 2, @map[iy * 32], 32 * 2);
  68. //then the right half
  69. dmaCopy(@Layer512x256Map + iy * 64 * 2 + 64, @map[(32 * 32) + (iy * 32)], 32 * 2);
  70. end;
  71. scroll(bg, 512, 256);
  72. end;
  73. procedure Text512x512();
  74. var
  75. bg: cint;
  76. map: pcuint16;
  77. iy, ix: integer;
  78. begin
  79. videoSetMode(MODE_0_2D);
  80. vramSetBankA(VRAM_A_MAIN_BG);
  81. bg := bgInit(0, BgType_Text8bpp, BgSize_T_512x512, 0,1);
  82. dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles));
  83. dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal));
  84. map := pcuint16(bgGetMapPtr(bg));
  85. //draw top half
  86. for iy := 0 to 31 do
  87. begin
  88. //first the left half
  89. dmaCopy(@Layer512x512Map + iy * 64 * 2, map + iy * 32, 32 * 2);
  90. //then the right half
  91. dmaCopy(@Layer512x512Map + iy * 64 * 2 + 64, map + (32 * 32) + iy * 32, 32 * 2);
  92. end;
  93. map := map + (32 * 32 * 2);
  94. //draw bottom half
  95. for iy := 0 to 31 do
  96. begin
  97. //copy one line at a time
  98. //first the left half
  99. dmaCopy(@Layer512x512Map + (iy + 32) * 64 * 2, map + iy * 32, 32 * 2);
  100. //then the right half
  101. dmaCopy(@Layer512x512Map + (iy + 32) * 64 * 2 + 64, map + (32 * 32) + iy * 32, 32 * 2);
  102. end;
  103. scroll(bg, 512, 512);
  104. end;
  105. procedure ExRot128x128();
  106. var
  107. bg: cint;
  108. begin
  109. videoSetMode(MODE_5_2D);
  110. vramSetBankA(VRAM_A_MAIN_BG);
  111. bg := bgInit(3, BgType_ExRotation, BgSize_ER_128x128, 0, 1);
  112. dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles));
  113. dmaCopy(@Layer128x128Map, bgGetMapPtr(bg), Layer128x128MapLen);
  114. dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal));
  115. scroll(bg, 128, 128);
  116. end;
  117. procedure ExRot256x256();
  118. var
  119. bg: cint;
  120. begin
  121. videoSetMode(MODE_5_2D);
  122. vramSetBankA(VRAM_A_MAIN_BG);
  123. bg := bgInit(3, BgType_ExRotation, BgSize_ER_256x256, 0,1);
  124. dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles));
  125. dmaCopy(@Layer256x256Map, bgGetMapPtr(bg), Layer256x256MapLen);
  126. dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal));
  127. scroll(bg, 256, 256);
  128. end;
  129. procedure ExRot512x512();
  130. var
  131. bg: cint;
  132. begin
  133. videoSetMode(MODE_5_2D);
  134. vramSetBankA(VRAM_A_MAIN_BG);
  135. bg := bgInit(3, BgType_ExRotation, BgSize_ER_512x512, 0,1);
  136. dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles));
  137. dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal));
  138. dmaCopy(@Layer512x512Map, bgGetMapPtr(bg), Layer512x512MapLen);
  139. scroll(bg, 512, 512);
  140. end;
  141. procedure ExRot1024x1024();
  142. var
  143. bg: cint;
  144. begin
  145. videoSetMode(MODE_5_2D);
  146. vramSetBankA(VRAM_A_MAIN_BG);
  147. bg := bgInit(3, BgType_ExRotation, BgSize_ER_1024x1024, 0,2);
  148. dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles));
  149. dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal));
  150. dmaCopy(@Layer1024x1024Map, bgGetMapPtr(bg), Layer1024x1024MapLen);
  151. scroll(bg, 1024, 1024);
  152. end;
  153. procedure Rot128x128();
  154. var
  155. bg: cint;
  156. begin
  157. videoSetMode(MODE_2_2D);
  158. vramSetBankA(VRAM_A_MAIN_BG);
  159. bg := bgInit(3, BgType_Rotation, BgSize_R_128x128, 0, 1);
  160. dmaCopy(@RotBackgroundsTiles, bgGetGfxPtr(bg), sizeof(RotBackgroundsTiles));
  161. dmaCopy(@RotBackgroundsPal, BG_PALETTE, sizeof(RotBackgroundsPal));
  162. dmaCopy(@Layer128x128rMap, bgGetMapPtr(bg), Layer128x128rMapLen);
  163. scroll(bg, 128, 128);
  164. end;
  165. procedure Rot256x256();
  166. var
  167. bg: cint;
  168. begin
  169. videoSetMode(MODE_2_2D);
  170. vramSetBankA(VRAM_A_MAIN_BG);
  171. bg := bgInit(3, BgType_Rotation, BgSize_R_256x256, 0,2);
  172. dmaCopy(@RotBackgroundsTiles, bgGetGfxPtr(bg), sizeof(RotBackgroundsTiles));
  173. dmaCopy(@RotBackgroundsPal, BG_PALETTE, sizeof(RotBackgroundsPal));
  174. dmaCopy(@Layer256x256rMap, bgGetMapPtr(bg), Layer256x256rMapLen);
  175. scroll(bg, 256, 256);
  176. end;
  177. procedure Rot512x512();
  178. var
  179. bg: cint;
  180. begin
  181. videoSetMode(MODE_2_2D);
  182. vramSetBankA(VRAM_A_MAIN_BG);
  183. bg := bgInit(3, BgType_Rotation, BgSize_R_512x512, 0,2);
  184. dmaCopy(@RotBackgroundsTiles, bgGetGfxPtr(bg), sizeof(RotBackgroundsTiles));
  185. dmaCopy(@RotBackgroundsPal, BG_PALETTE, sizeof(RotBackgroundsPal));
  186. dmaCopy(@Layer512x512rMap, bgGetMapPtr(bg), Layer512x512rMapLen);
  187. scroll(bg, 512, 512);
  188. end;
  189. procedure Rot1024x1024();
  190. var
  191. bg: cint;
  192. begin
  193. videoSetMode(MODE_2_2D);
  194. vramSetBankA(VRAM_A_MAIN_BG);
  195. bg := bgInit(3, BgType_Rotation, BgSize_R_1024x1024, 0,3);
  196. dmaCopy(@RotBackgroundsTiles, bgGetGfxPtr(bg), sizeof(RotBackgroundsTiles));
  197. dmaCopy(@RotBackgroundsPal, BG_PALETTE, sizeof(RotBackgroundsPal));
  198. dmaCopy(@Layer1024x1024rMap, bgGetMapPtr(bg), Layer1024x1024rMapLen);
  199. scroll(bg, 1024, 1024);
  200. end;
  201. procedure Bmp8_128x128();
  202. var
  203. bg: cint;
  204. buffer: pcuint16;
  205. i, iy, ix: integer;
  206. begin
  207. randomize;
  208. videoSetMode(MODE_5_2D);
  209. vramSetBankA(VRAM_A_MAIN_BG);
  210. bg := bgInit(3, BgType_Bmp8, BgSize_B8_128x128,0,0);
  211. for i := 0 to 255 do
  212. BG_PALETTE[i] := random(high(cuint16));
  213. buffer := pcuint16(bgGetGfxPtr(bg));
  214. for iy := 0 to 127 do
  215. for ix := 0 to (128 div 2) - 1 do
  216. buffer[ix + iy * 64] := random(high(cuint16));
  217. scroll(bg, 128, 128);
  218. end;
  219. procedure Bmp8_256x256();
  220. var
  221. bg: cint;
  222. buffer: pcuint16;
  223. i, iy, ix: integer;
  224. begin
  225. randomize;
  226. videoSetMode(MODE_5_2D);
  227. vramSetBankA(VRAM_A_MAIN_BG);
  228. bg := bgInit(3, BgType_Bmp8, BgSize_B8_256x256,0,0);
  229. for i := 0 to 255 do
  230. BG_PALETTE[i] := random(high(cuint16));
  231. buffer := pcuint16(bgGetGfxPtr(bg));
  232. for iy := 0 to 255 do
  233. for ix := 0 to (256 div 2) - 1 do
  234. buffer[ix + iy * 128] := random(high(cuint16));
  235. scroll(bg, 256, 256);
  236. end;
  237. procedure Bmp8_512x256();
  238. var
  239. bg: cint;
  240. buffer: pcuint16;
  241. iy, ix: integer;
  242. i: integer;
  243. begin
  244. randomize;
  245. videoSetMode(MODE_5_2D);
  246. vramSetBankA(VRAM_A_MAIN_BG);
  247. bg := bgInit(3, BgType_Bmp8, BgSize_B8_512x256,0,0);
  248. for i := 0 to 255 do
  249. BG_PALETTE[i] := random(high(cuint16));
  250. buffer := pcuint16(bgGetGfxPtr(bg));
  251. for iy := 0 to 255 do
  252. for ix := 0 to (512 div 2) - 1 do
  253. buffer[ix + iy * 256] := random(high(cuint16));
  254. scroll(bg, 512, 256);
  255. end;
  256. procedure Bmp8_512x512();
  257. var
  258. bg: cint;
  259. buffer: pcuint16;
  260. iy, ix: integer;
  261. i: integer;
  262. begin
  263. randomize;
  264. videoSetMode(MODE_5_2D);
  265. vramSetBankA(VRAM_A_MAIN_BG);
  266. vramSetBankB(VRAM_B_MAIN_BG);
  267. bg := bgInit(3, BgType_Bmp8, BgSize_B8_512x512,0,0);
  268. for i := 0 to 255 do
  269. BG_PALETTE[i] := random(high(cuint16));
  270. buffer := pcuint16(bgGetGfxPtr(bg));
  271. for iy := 0 to 511 do
  272. for ix := 0 to (512 div 2) -1 do
  273. buffer[ix + iy * 256] := random(high(cuint16));
  274. scroll(bg, 512, 512);
  275. end;
  276. procedure Bmp8_512x1024();
  277. var
  278. bg: cint;
  279. buffer: pcuint16;
  280. iy, ix: integer;
  281. i: integer;
  282. begin
  283. randomize;
  284. videoSetMode(MODE_6_2D);
  285. vramSetBankA(VRAM_A_MAIN_BG);
  286. vramSetBankB(VRAM_B_MAIN_BG);
  287. vramSetBankC(VRAM_C_MAIN_BG);
  288. vramSetBankD(VRAM_D_MAIN_BG);
  289. bg := bgInit(2, BgType_Bmp8, BgSize_B8_512x1024,0,0);
  290. for i := 0 to 255 do
  291. BG_PALETTE[i] := random(high(cuint16));
  292. buffer := pcuint16(bgGetGfxPtr(bg));
  293. for iy := 0 to 1023 do
  294. for ix := 0 to (512 div 2) -1 do
  295. buffer[ix + iy * 256] := random(high(cuint16));
  296. scroll(bg, 512, 1024);
  297. end;
  298. procedure Bmp8_1024x512();
  299. var
  300. bg: cint;
  301. buffer: pcuint16;
  302. iy, ix: integer;
  303. i: integer;
  304. begin
  305. randomize;
  306. videoSetMode(MODE_6_2D);
  307. vramSetBankA(VRAM_A_MAIN_BG);
  308. vramSetBankB(VRAM_B_MAIN_BG);
  309. vramSetBankC(VRAM_C_MAIN_BG);
  310. vramSetBankD(VRAM_D_MAIN_BG);
  311. bg := bgInit(2, BgType_Bmp8, BgSize_B8_1024x512,0,0);
  312. for i := 0 to 255 do
  313. BG_PALETTE[i] := random(high(cuint16));
  314. buffer := pcuint16(bgGetGfxPtr(bg));
  315. for iy := 0 to 511 do
  316. for ix := 0 to (1024 div 2) -1 do
  317. buffer[ix + iy * 512] := random(high(cuint16));
  318. scroll(bg, 1024, 512);
  319. end;
  320. procedure Bmp16_128x128();
  321. var
  322. bg: cint;
  323. buffer: pcuint16;
  324. iy, ix: integer;
  325. begin
  326. randomize;
  327. videoSetMode(MODE_5_2D);
  328. vramSetBankA(VRAM_A_MAIN_BG);
  329. bg := bgInit(2, BgType_Bmp16, BgSize_B16_128x128,0,0);
  330. buffer := pcuint16(bgGetGfxPtr(bg));
  331. for iy := 0 to 127 do
  332. for ix := 0 to 127 do
  333. buffer[ix + iy * 128] := random(high(cuint16));
  334. scroll(bg, 128, 128);
  335. end;
  336. procedure Bmp16_256x256();
  337. var
  338. bg: cint;
  339. buffer: pcuint16;
  340. iy, ix: integer;
  341. begin
  342. randomize;
  343. videoSetMode(MODE_5_2D);
  344. vramSetBankA(VRAM_A_MAIN_BG);
  345. bg := bgInit(2, BgType_Bmp16, BgSize_B16_256x256,0,0);
  346. buffer := pcuint16(bgGetGfxPtr(bg));
  347. for iy := 0 to 255 do
  348. for ix := 0 to 255 do
  349. buffer[ix + iy * 256] := random(high(cuint16));
  350. scroll(bg, 256, 256);
  351. end;
  352. procedure Bmp16_512x256();
  353. var
  354. bg: cint;
  355. buffer: pcuint16;
  356. iy, ix: integer;
  357. begin
  358. randomize;
  359. videoSetMode(MODE_5_2D);
  360. vramSetBankA(VRAM_A_MAIN_BG);
  361. vramSetBankB(VRAM_B_MAIN_BG);
  362. bg := bgInit(2, BgType_Bmp16, BgSize_B16_512x256,0,0);
  363. buffer := pcuint16(bgGetGfxPtr(bg));
  364. for iy := 0 to 255 do
  365. for ix := 0 to 512 do
  366. buffer[ix + iy * 512] := random(high(cuint16));
  367. scroll(bg, 512, 256);
  368. end;
  369. procedure Bmp16_512x512();
  370. var
  371. bg: cint;
  372. buffer: pcuint16;
  373. iy, ix: integer;
  374. begin
  375. randomize;
  376. videoSetMode(MODE_5_2D);
  377. vramSetBankA(VRAM_A_MAIN_BG);
  378. vramSetBankB(VRAM_B_MAIN_BG);
  379. vramSetBankC(VRAM_C_MAIN_BG);
  380. vramSetBankD(VRAM_D_MAIN_BG);
  381. bg := bgInit(2, BgType_Bmp16, BgSize_B16_512x512,0,0);
  382. buffer := pcuint16(bgGetGfxPtr(bg));
  383. for iy := 0 to 511 do
  384. for ix := 0 to 511 do
  385. buffer[ix + iy * 512] := random(high(cuint16));
  386. scroll(bg, 512, 512);
  387. end;
  388. end.