einhander.lua 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556
  1. -- title: einhander
  2. -- author: pixelbath
  3. -- desc: one-handed
  4. -- script: lua
  5. seed=12345
  6. player={
  7. x=20, y=50,
  8. inv=0,
  9. show=1,
  10. fire=0,
  11. gun_down=0,
  12. gun_anim=0,
  13. gun_held=0,
  14. is_firing=0,
  15. big_gun_cooldown=0,
  16. }
  17. gunsprites={
  18. 292, -- vulcan
  19. 294, -- cannon
  20. 296, -- spreader
  21. 298, -- wasp
  22. 300, -- grenade
  23. 302, -- hedgehog
  24. }
  25. gunnames={
  26. {324, "V", "ULCAN"},
  27. {325, "C", "ANNON"},
  28. {326, "S", "PREADER"},
  29. {327, "W", "ASP"},
  30. {328, "G", "RENADE"},
  31. {329, "H", "EDGEHOG"},
  32. }
  33. vulcanMuzzleSprites={
  34. 264, 266, 280
  35. }
  36. shellParticles={}
  37. -- particles are just white pixels by default
  38. for i=1,15 do
  39. table.insert(shellParticles, {x=0,y=0,vx=0,vy=0,age=0,dieAt=0,color=12,idx=0,isPixel=true})
  40. end
  41. particlePointer=1 -- points at the next particle to be spawned
  42. weaponBgSize=16--12
  43. weaponBgTimer=0
  44. weaponAmmo=3000
  45. p_bullets = {}
  46. p_big_bullets = {}
  47. multiplier = 12
  48. multiplier_sub = 0
  49. multiplier_tick = 0
  50. score = 25000
  51. active_enemies={}
  52. t=0
  53. math.randomseed(seed)
  54. function drawParallelogram(x, y, w, h, skewpx, color)
  55. tri(x+skewpx, y, x+w, y+h, x, y+h, color)
  56. tri(x+skewpx, y, x+w, y+h, x+w+skewpx, y, color)
  57. end
  58. function spawnPixelParticle(x, y, vx, vy, age, dieAt, color)
  59. local p = shellParticles[particlePointer]
  60. p.x = x
  61. p.y = y
  62. p.vx = vx
  63. p.vy = vy
  64. p.age = age
  65. p.dieAt = dieAt
  66. p.color = color
  67. p.isPixel = true
  68. particlePointer = particlePointer + 1
  69. if particlePointer > 15 then particlePointer = 1 end
  70. end
  71. function spawnSpriteParticle(x, y, vx, vy, age, dieAt, index)
  72. local p = shellParticles[particlePointer]
  73. p.x = x
  74. p.y = y
  75. p.vx = vx
  76. p.vy = vy
  77. p.age = age
  78. p.dieAt = dieAt
  79. p.idx = index
  80. p.isPixel = false
  81. particlePointer = particlePointer + 1
  82. if particlePointer > 15 then particlePointer = 1 end
  83. end
  84. function spawnEnemySprite(x, y, age, type)
  85. local e = {}
  86. e.hp = 0
  87. e.hp_shield = 0
  88. e.x = x
  89. e.y = y
  90. e.age = age
  91. e.type = type
  92. if type == 1 then
  93. e.hp = 100
  94. e.hp_shield = 50
  95. end
  96. table.insert(active_enemies, e)
  97. end
  98. spawnEnemySprite(150, 50, 0, 1)
  99. function updateEnemies()
  100. for i=1,#active_enemies do
  101. local e = active_enemies[i]
  102. -- car - medium
  103. if e.type == 1 then
  104. end
  105. e.age = e.age + 1
  106. end
  107. end
  108. function drawEnemies()
  109. for i=1,#active_enemies do
  110. local e = active_enemies[i]
  111. -- car - medium
  112. if e.type == 1 then
  113. -- shield
  114. spr(352, e.x, e.y, 0, 1, 0, 0, 2, 1)
  115. -- body
  116. spr(354, e.x + 6, e.y, 0, 1, 0, 0, 3, 1)
  117. end
  118. end
  119. end
  120. function drawPlayer()
  121. if (player.show) then
  122. -- arm
  123. if player.gun_anim > 0 then
  124. --spr(260, player.x+12, player.y+11, 0, 1, 0, 3, 2, 1)
  125. else
  126. if player.gun_down then
  127. spr(260, player.x+12, player.y+11, 0, 1, 0, 0, 2, 1)
  128. else
  129. spr(260, player.x+12, player.y-2, 0, 1, 2, 0, 2, 1)
  130. end
  131. end
  132. -- ship
  133. spr(256, player.x, player.y, 0, 1, 0, 0, 4, 2)
  134. end
  135. -- draw regular bullets
  136. for key,val in ipairs(p_bullets) do
  137. spr(262, val.x, val.y, 0)
  138. end
  139. -- draw big bullets
  140. for key,val in ipairs(p_big_bullets) do
  141. local spritenum = 0
  142. if val.type == 2 then spritenum = 282 end
  143. if val.type == 3 then spritenum = 267 end
  144. spr(spritenum, val.x, val.y, 0)
  145. end
  146. -- custom routines depending on gun held
  147. if player.gun_held > 0 then
  148. local gunsprite = gunsprites[player.gun_held]
  149. local gunpos = player.y - 2
  150. if player.gun_down then
  151. gunsprite = gunsprite + 16
  152. gunpos = gunpos + 14
  153. end
  154. if player.gun_anim > 0 then
  155. spr(gunsprite, player.x+3, gunpos, 0, 1, 0, 3, 2, 1)
  156. else
  157. spr(gunsprite, player.x+12, gunpos, 0, 1, 0, 0, 2, 1)
  158. end
  159. -- vulcan
  160. if player.gun_held == 1 then
  161. local flipfire = 0
  162. local muzzleIdx = math.random(0,3)
  163. if math.random(1, 2) == 2 then
  164. flipfire = 2
  165. end
  166. if player.fire == 0 then
  167. player.fire = 2
  168. else
  169. player.fire = player.fire - 1
  170. end
  171. -- not tracking individual bullets with vulcan
  172. -- begin dakka
  173. if player.is_firing > 0 then
  174. if muzzleIdx > 0 then
  175. if player.gun_down then
  176. spr(vulcanMuzzleSprites[muzzleIdx], player.x + 27, player.y + 14, 0, 1, flipfire, 0, 2, 1)
  177. else
  178. spr(vulcanMuzzleSprites[muzzleIdx], player.x + 28, player.y - 2, 0, 1, flipfire, 0, 2, 1)
  179. end
  180. end
  181. if t % 10 == 0 then
  182. local randFactor = math.random(10,100)
  183. local spawnOffsetY = 1
  184. local lineStart = math.random(player.x+20, 260)
  185. if player.gun_down then
  186. spawnOffsetY = 18
  187. -- vulcan tilts downward so we get to do trig! yay!
  188. lineStart = lineStart - player.x
  189. local angle = 8
  190. local radius2 = lineStart+38
  191. local c = math.cos(angle * math.pi / 180)
  192. local s = math.sin(angle * math.pi / 180)
  193. line(c * lineStart + player.x + 18, s * lineStart + player.y + 17, c * radius2 + player.x + 18, s * radius2 + player.y + 17, 14)
  194. else
  195. line(lineStart, player.y+1, lineStart+40, player.y+1, 14)
  196. end
  197. -- shells
  198. spawnPixelParticle(player.x+14, player.y+spawnOffsetY, -0.2, -0.6 + (randFactor / 100), 0, 50, 15)
  199. end
  200. end
  201. -- update shells with light gravity
  202. for i=1,#shellParticles do
  203. local p = shellParticles[i]
  204. p.vy = p.vy + 0.1
  205. end
  206. end
  207. -- cannon
  208. if player.gun_held == 2 then
  209. if player.fire == 0 then
  210. player.fire = 30
  211. else
  212. player.fire = player.fire - 1
  213. end
  214. -- todo: move to update()
  215. for i=1, #p_big_bullets do
  216. if p_big_bullets[i].x < 250 then
  217. p_big_bullets[i].x = p_big_bullets[i].x + 10
  218. end
  219. end
  220. end
  221. end
  222. for i=1,#shellParticles do
  223. local p = shellParticles[i]
  224. if p.age < p.dieAt then
  225. if p.isPixel then
  226. pix(p.x, p.y, p.color)
  227. else
  228. spr(p.idx, p.x, p.y)
  229. end
  230. end
  231. end
  232. if player.gun_anim > 0 then player.gun_anim = player.gun_anim - 1 end
  233. end
  234. function drawUI()
  235. -- weapon bg
  236. -- spr(322, 4, 114, 0, 1, 0, 0, 1, 2)
  237. -- rect(12, 114, 8, 16, 6)
  238. -- spr(323, 20, 114, 0, 1, 0, 0, 1, 2)
  239. drawParallelogram(6, 115, weaponBgSize, 12, 6, 6)
  240. -- selected weapon
  241. if player.gun_held > 0 then
  242. local lettersprite = gunnames[player.gun_held][1]
  243. local guntext = gunnames[player.gun_held][3]
  244. spr(lettersprite, 14, 118, 0, 1)
  245. print(guntext, 24, 122, 12, true, 1, true)
  246. print(weaponAmmo, 12, 129, 12, true, 1, true)
  247. end
  248. -- multiplier
  249. -- TODO: need to do multipliers over 10, so the X needs to move left when that happens
  250. spr(340, 164, 114, 0)
  251. --spr(340 + multiplier, 172, 113, 0)
  252. spr(330, 180, 114, 0, 1, 0, 0, 4, 1)
  253. spr(331, 212, 114, 0, 1, 0, 0, 3, 1)
  254. spr(334, 236, 114, 0, 1)
  255. if multiplier_sub > 0 then
  256. for i = 1, multiplier_sub do
  257. spr(335, 177 + (i * 6), 114, 0)
  258. end
  259. end
  260. -- score
  261. local scorestring = tostring(score)
  262. for i = 1, #scorestring do
  263. local char = scorestring:sub(i, i)
  264. local numsprite = 340 + tonumber(char)
  265. -- this is a hack because I ordered the numbers weirdly
  266. if char == "0" then numsprite = 350 end
  267. spr(numsprite, (230 - (8 * #scorestring)) + (i * 8), 123, 0)
  268. end
  269. end
  270. function drawWater(waterHeight)
  271. -- TODO: ripples, distortion
  272. for i=0,waterHeight-1 do
  273. local row = (135 - i - waterHeight) * 120
  274. local rowDest = (135 + i - waterHeight + 1) * 120
  275. memcpy(rowDest, row, 120)
  276. end
  277. end
  278. -- shiftValue 1, 0, -1, -2 From brightest to darkest, respectively. 0 is no change
  279. function filterColor(inputColor, shiftValue)
  280. if shiftValue == 0 then return end
  281. end
  282. function drawDebug()
  283. -- print("p.gdown: " .. tostring(player.gun_down), 5, 5, 12, true, 1, true)
  284. -- print("spr: " .. tostring(vulcanMuzzleSprites[player.fire + 1]), 5, 13, 12, true, 1, true)
  285. end
  286. function update()
  287. if btn(0) then
  288. if player.y > 0 then
  289. player.y=player.y-2
  290. end
  291. end
  292. if btn(1) then
  293. if player.y < 120 then
  294. player.y=player.y+2
  295. end
  296. end
  297. if btn(2) then
  298. if player.x > 1 then
  299. player.x=player.x-2
  300. end
  301. end
  302. if btn(3) then
  303. if player.x < 216 then
  304. player.x=player.x+2
  305. end
  306. end
  307. if btnp(4) then
  308. player.gun_held = player.gun_held + 1
  309. if player.gun_held > 6 then player.gun_held = 0 end
  310. end
  311. if btn(5) then
  312. --if player.gun_held == 0 then
  313. if player.fire == 0 then
  314. player.fire = 5
  315. --table.insert(p_bullets, {x=player.x+10, y=player.y+2})
  316. else
  317. player.fire = player.fire - 1
  318. end
  319. --end
  320. if player.gun_held == 1 then
  321. player.is_firing = 1
  322. end
  323. if player.gun_held == 2 then
  324. -- controlled by cooldown (or semi-auto)
  325. if player.is_firing == 1 then player.is_firing = 0 end
  326. if player.big_gun_cooldown == 0 then
  327. player.big_gun_cooldown = 30
  328. player.is_firing = 1
  329. else
  330. player.big_gun_cooldown = player.big_gun_cooldown - 1
  331. player.is_firing = 0
  332. end
  333. if player.is_firing == 1 then
  334. table.insert(p_big_bullets, {x=player.x+12, y=player.y+6, type=player.gun_held})
  335. end
  336. end
  337. else
  338. player.big_gun_cooldown = 0
  339. end
  340. if btnp(5) then
  341. -- debug
  342. player.gun_down = not player.gun_down
  343. player.gun_anim = 1
  344. end
  345. for key,val in ipairs(p_bullets) do
  346. p_bullets[key].x = p_bullets[key].x + 8
  347. if val.x > 240 then
  348. table.remove(p_bullets, key)
  349. end
  350. end
  351. for key,val in ipairs(p_big_bullets) do
  352. p_big_bullets[key].x = p_big_bullets[key].x + 8
  353. if val.x > 240 then
  354. table.remove(p_big_bullets, key)
  355. end
  356. end
  357. for i=1,#shellParticles do
  358. local p = shellParticles[i]
  359. p.x = p.x + p.vx
  360. p.y = p.y + p.vy
  361. p.age = p.age + 1
  362. end
  363. t=t+1
  364. end
  365. function TIC()
  366. update()
  367. cls(0)
  368. drawPlayer()
  369. drawEnemies()
  370. -- drawWater(10)
  371. drawUI()
  372. drawDebug()
  373. end
  374. -- <TILES>
  375. -- 000:00ffffff00ffffff00ffffff00ffffff00ffffff00ffffff00ffffff00ffffff
  376. -- 001:ffffffeeffffffeeffffffeeffffffeeffffffeeffffffeeffffffeeffffffee
  377. -- 004:eee00000e0e00000efe00000f0f0fff0f0f0000000f000000000000000000000
  378. -- 005:eee00000e0e00000efe00000f0f0fff0f0f0f0f000f000000000000000000000
  379. -- 006:eee00000e0e00000efe00000f0f0fff0f0f0000000f000000000000000000000
  380. -- 007:eee00000e0e00000efe00000f0f0fff0f0f0f0f000f000000000000000000000
  381. -- 016:ffffffffffffffffffffffffffbbbffbffbbbffbffffffffffffffffffffffff
  382. -- 017:ffffffffffffffffffffffffbbffffffbbffffffffffffffffffffffffffffff
  383. -- 020:0000000000000000000000000099008800aa0088009a00880088000000000000
  384. -- 021:000000000000000000000000009a00aa00aa00aa009900990088008800000000
  385. -- 022:0000000000000000000000000099009900aa00a900aa00aa0088008800000000
  386. -- 023:000000000000000000000000009a009a00aa009a009900990088008800000000
  387. -- 033:ffffffffffffffffffffffffbbf888ffbbf888fbffffffffffffffffffffffff
  388. -- </TILES>
  389. -- <SPRITES>
  390. -- 000:04488a844488aaaa4889999a00000d99000000d90000000d0000000000000000
  391. -- 001:48000000889aa000aa889aa09aaa899a99aaa884999aa8430d99a43f00d999ff
  392. -- 002:000000000000000000000000a00000004400000038ddc000f8998000ff88dbc0
  393. -- 004:0d000000d9add0009999addd8122999900128889000890080000000000000000
  394. -- 005:000000000000000000000000d000000080000000800000000000000000000000
  395. -- 006:0000000000000000000000000000440044444cc0000044000000000000000000
  396. -- 007:000000000000000000000000eddc0000fee00000000000000000000000000000
  397. -- 008:00000000000000000cc40000ccccccccccccccc404cc00000000000000000000
  398. -- 009:000000000000000000000000ccc4400000000000000000000000000000000000
  399. -- 010:0000000000000000033000003333300033330000033000000000000000000000
  400. -- 017:0009aaaa00088999000eee080000000000000000000000000000000000000000
  401. -- 018:ffeeeddcaf0fffed880e65fe0000eed000000000000000000000000000000000
  402. -- 019:00000000b0000000d00000000000000000000000000000000000000000000000
  403. -- 020:0d000000d9add0009999addd8122999900128888000890000000000000000000
  404. -- 021:0000000000000000000000009d00000098000000880000000000000000000000
  405. -- 022:0300000034300000030000000000000000000000000000000000000000000000
  406. -- 023:000000000000000000000000eddd0000feed0000000000000000000000000000
  407. -- 024:0000000000000000033300004444333344444433033300000000000000000000
  408. -- 025:0000000000000000000000000000000033000000000000000000000000000000
  409. -- 026:0000000000000000000000000004444000444444000444400000000000000000
  410. -- 032:0000000011101300211023003210340043104c0056705c006770650077707500
  411. -- 036:00000000000000000edce000f999edddfffffeee000099dd0000fff000000000
  412. -- 037:0000000000000000000000d0dddddd9deeeeeefe000000f00000000000000000
  413. -- 038:00000000000000000000dddd0dd0ffe3defddeeed2eeeff9ff00feed00000ff0
  414. -- 039:0000dde00ddee900ee9000003000000000000000d00000000000000000000000
  415. -- 040:000000000000000001eeef00d1e77770d3766667c4d66666000000ee00000000
  416. -- 041:00000000000000000000000077700750f565065077776e500077755000000000
  417. -- 042:0000000000000000000c555c000b646b000b666b0009777900000ff000000000
  418. -- 043:0000000000000000540000006300000063000000720000000000000000000000
  419. -- 044:00000000000000000000edd600006ed600dd7ff600ee777700000fe000000000
  420. -- 046:00000000000dd0dd000ee0ee000ee0ee000444440003fff30003333300000000
  421. -- 048:88808a0098809a00a980ab00ba80bc00cdf0cc00def0dc00ef80ed00f880fd00
  422. -- 052:000000000fedc0000f999e0000fffddd00009eee0000f9de0000fff000000000
  423. -- 053:000000000000000000000000d0000000dddd000deeeeddd9000eeefd000000f0
  424. -- 054:00000000000000000ddd099dd2e9dffefeeeeee90000fff00000feed00000000
  425. -- 055:0000000000000000ddddd000eeeeeeee34000000000000000000000000000000
  426. -- 056:00000000000000005577700e5e677776560565f7570077700000000000000000
  427. -- 057:0000000000000000e00000006666d4c0666673d07777e1d00feee10000000000
  428. -- 058:000000000000000000000ff0000c555c000b666b000b636b0009777900000000
  429. -- 059:0000000000000000000000005400000062000000620000007200000000000000
  430. -- 060:0000000000000000000dd000006665dd006ed6ee007ee600007eff0000000000
  431. -- 062:000000000000000000444440004fff400033333000fe0fe000ed0ed000ee0ee0
  432. -- 068:0c00000c0c00000c0cc000cc00c000c000cc0cc0000c0c00000ccc000000c000
  433. -- 069:00ccccc00cc000c00c0000000c0000000c0000000c0000000cc000c000ccccc0
  434. -- 070:00ccccc00cc000000c0000000ccccc0000000cc0000000c000000cc00ccccc00
  435. -- 071:0c00000c0c00000c0c00c00c0c00c00c0c00c00c0c00c00c0cc0c0cc00ccccc0
  436. -- 072:00ccccc00cc000c00c0000000c0000000c00ccc00c0000c00cc000c000ccccc0
  437. -- 073:0c0000c00c0000c00c0000c00cccccc00c0000c00c0000c00c0000c00c0000c0
  438. -- 074:00dddddd000dd0000000dd00000dd00000dd00000dd0000d0ddddddd00000000
  439. -- 075:dddddddd0dd0000d00dd00000dd0000ddd0000ddd0000dd0dddddddd00000000
  440. -- 076:ddddddddd0000dd0dd0000ddd0000dd00000dd00000dd000dddddddd00000000
  441. -- 077:dddddddd000dd0000000dd00000dd00000dd00000dd0000ddddddddd00000000
  442. -- 078:dd0000000dd0000000d000000dd00000dd000000d00000000000000000000000
  443. -- 079:0000000000333300000333300033330003333000333300000000000000000000
  444. -- 080:0000b000000aabb000a999aa0090ffe90000fffe00000ff00000000000000000
  445. -- 081:000000000000000000000000ab000000e9ab0000fee9ab0000fee9a00000fee0
  446. -- 084:000000000c000c0000c0c000000c000000c0c0000c000c000000000000000000
  447. -- 085:00000000000ccc000000cc000000cc000000cc000000cc000000cc000000cc00
  448. -- 086:00000000000ccc0000c00cc000000cc00000cc00000cc00000cc000000ccccc0
  449. -- 087:00000000000ccc0000c00cc000000cc00000cc0000000cc000c00cc0000ccc00
  450. -- 088:00000000000ccc0000cccc0000c0cc000cc0cc000c00cc000cccccc00000cc00
  451. -- 089:0000000000ccccc000cc000000cccc0000000cc000000cc000c00cc0000ccc00
  452. -- 090:00000000000ccc0000cc00c000cc000000cccc0000cc0cc000cc0cc0000ccc00
  453. -- 091:0000000000ccccc000000cc000000cc00000cc000000cc00000cc000000cc000
  454. -- 092:00000000000ccc0000cc0cc000cc0cc0000ccc0000cc0cc000cc0cc0000ccc00
  455. -- 093:00000000000ccc0000cc0cc000cc0cc0000cccc000000cc000c00cc0000ccc00
  456. -- 094:00000000000ccc0000cc0cc000cc0cc000cc0cc000cc0cc000cc0cc0000ccc00
  457. -- 096:0000000000000000000000aa0000ae9900ae9998ae99998e944cc8889944cc88
  458. -- 097:00000000aadddddaae999eaa9999dddd8889ffeeee9999f08888880088888000
  459. -- 098:000000000000000000000000000aaa9900a9eded0a9ededdd888888800000000
  460. -- 099:00000000000000cc00000bdbddd0bddeeeeddddfee9999998811222200000222
  461. -- 100:0000000000000000000ddb00fffee000bfcfa000999999003333334022222224
  462. -- </SPRITES>
  463. -- <MAP>
  464. -- 006:000000000112010110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
  465. -- 007:000000000101010110000000515161610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
  466. -- 008:000000000101111210000000715161410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
  467. -- 009:000000000101010110000000417161610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
  468. -- 010:000000000101011210000000615161710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
  469. -- 011:000000000101010110000000515171510000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
  470. -- 012:000000000101011210000000715161610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
  471. -- 013:000000000112010110000000616141710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
  472. -- 014:000000000101010110000000715161710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
  473. -- 015:000000000101010110000000515161710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
  474. -- 016:000000000101120110000000714161410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
  475. -- </MAP>
  476. -- <WAVES>
  477. -- 000:00000000ffffffff00000000ffffffff
  478. -- 001:012345678acdeeffffeedca876543210
  479. -- 002:0123456789abcdef0123456789abcdef
  480. -- 003:ff000000000000000ff0000000000000
  481. -- 004:01234000000000000000000000000000
  482. -- </WAVES>
  483. -- <SFX>
  484. -- 000:01000101010201020101010f010e010e010f0101010201020101010f010e010e010f0101010201020101010f010e010e010f0101010201020101010f6020000000f9
  485. -- 001:9400940094009400940094009400a400a400a400a400b400b400b400b400b400b400b400c400c400c400c400d400d400d400e400e400f400f400f400212000000000
  486. -- 002:030f030e130d330c530b730a9309b309d308f308f308f308f308f308f308f308f308f308f308f308f308f308f308f308f308f308f308f308f308f308105000000000
  487. -- 003:85009500a500b500c500d500e500f500f500f500f500f500f500f500f500f500f500f500f500f500f500f500f500f500f500f500f500f500f500f500502000000000
  488. -- 004:6500750085009500a500b500c500d500e500f500f500f500f500f500f500f500f500f500f500f500f500f500f500f500f500f500f500f500f500f500572000000000
  489. -- </SFX>
  490. -- <PATTERNS>
  491. -- 000:40002200000000003000000050003a00000000003000000040002200000000003000000050003a000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
  492. -- </PATTERNS>
  493. -- <TRACKS>
  494. -- 000:1800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e0000
  495. -- </TRACKS>
  496. -- <PALETTE>
  497. -- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57
  498. -- </PALETTE>