Advertisement
LuigiBlood

Another World Byte codes

Sep 17th, 2012
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.66 KB | None | 0 0
  1. Another World Opcode List
  2.  
  3. 00 FF 00 04 00 F6 00 01 00 E3 00 00 00 32 00 00 06
  4. <bh:00><bh:ff><bh:00><bh:04><bh:00><bh:f6><bh:00><bh:01><bh:00><bh:e3><bh:00><bh:00><bh:00>2<bh:00><bh:00><bh:06>
  5.  
  6. 3f9fd
  7.  
  8. Set.i Vn, Imm16
  9. 00 DD NNNN
  10.  
  11. Set Vd, Vs
  12. 01 DD SS
  13.  
  14. Add Vd, Vs
  15. 02 DD SS
  16.  
  17. Add.i Vn, Imm16
  18. 03 DD NNNN
  19.  
  20. Jsr Address
  21. 04 AAAA
  22.  
  23. return
  24. 05
  25.  
  26. break
  27. 06
  28.  
  29. Jmp Address
  30. 07 AAAA
  31.  
  32. SetVec Nb, Address
  33. 08 VV AAAA
  34.  
  35. dbra Vn, Address
  36. 09 VV AAAA
  37.  
  38.  
  39. Si(Vn,Vn):
  40. Si Vn = Vn Jmp Address
  41. 0A 80 VV WW AAAA
  42.  
  43. Si Vn <> Vn Jmp Address
  44. 0A 81 VV WW AAAA
  45.  
  46. Si Vn > Vn Jmp Address
  47. 0A 82 VV WW AAAA
  48.  
  49. Si Vn => Vn Jmp Address
  50. 0A 83 VV WW AAAA
  51.  
  52. Si Vn < Vn Jmp Address
  53. 0A 84 VV WW AAAA
  54.  
  55. Si Vn <= Vn Jmp Address
  56. 0A 85 VV WW AAAA
  57.  
  58.  
  59. Si(Vn,Imm8):
  60. Si Vn = Imm8 Jmp Address
  61. 0A 00 VV WW AAAA
  62.  
  63. Si Vn <> Imm8 Jmp Address
  64. 0A 01 VV WW AAAA
  65.  
  66. Si Vn > Imm8 Jmp Address
  67. 0A 02 VV WW AAAA
  68.  
  69. Si Vn => Imm8 Jmp Address
  70. 0A 03 VV WW AAAA
  71.  
  72. Si Vn < Imm8 Jmp Address
  73. 0A 04 VV WW AAAA
  74.  
  75. Si Vn <= Imm8 Jmp Address
  76. 0A 05 VV WW AAAA
  77.  
  78.  
  79. Si(Vn,Imm16):
  80. Si Vn = Imm16 Jmp Address
  81. 0A 40 VV WWWW AAAA
  82.  
  83. Si Vn <> Imm16 Jmp Address
  84. 0A 41 VV WWWW AAAA
  85.  
  86. Si Vn > Imm16 Jmp Address
  87. 0A 42 VV WWWW AAAA
  88.  
  89. Si Vn => Imm16 Jmp Address
  90. 0A 43 VV WWWW AAAA
  91.  
  92. Si Vn < Imm16 Jmp Address
  93. 0A 44 VV WWWW AAAA
  94.  
  95. Si Vn <= Imm16 Jmp Address
  96. 0A 45 VV WWWW AAAA
  97.  
  98.  
  99. Fade PalNb
  100. 0B NN 00?
  101.  
  102. Vec Start, End, Unlock
  103. 0C SS EE 00
  104.  
  105. Vec Start, End, Lock
  106. 0C SS EE 01
  107.  
  108. Vec Start, End, Clean
  109. 0C SS EE 02
  110.  
  111. SetWS Nb
  112. 0D NN
  113.  
  114. Clr Nb, Color
  115. 0E NN 0C
  116.  
  117. Copy Ss Sd
  118. 0F SS DD
  119.  
  120. Show NN
  121. 10 NN
  122.  
  123. Bigend
  124. 11
  125.  
  126. Text TxtNb, X, Y, Color
  127. 12 TTTT XX YY 0C
  128.  
  129. Sub Vd, Vs
  130. 13 DD SS
  131.  
  132. And.i Vn,Imm16
  133. 14 VV IIII
  134.  
  135. Or.i Vn,Imm16
  136. 15 VV IIII
  137.  
  138. Lsl Vn, Imm16
  139. 16 VV IIII
  140.  
  141. Lsr Vn, Imm16
  142. 17 VV IIII
  143.  
  144. Play FileNb, Note, Volume, Channel
  145. 18 FFFF NN VV CC
  146.  
  147. Load FileNb
  148. 19 FFFF
  149.  
  150. Song FileNb, Tempo, Position
  151. 1A FFFF TTTT PP
  152.  
  153.  
  154. Spr.s Addr, X, Y
  155. (80 || AA) AA XX YY
  156.  
  157.  
  158. Spr.l Addr, X, Y, (Z)
  159. 01XXYYZZb AAAA (XX)XX (YY)YY (ZZZZ)
  160. 0=00=Imm16
  161. 1=01=Variable
  162. 2=10=Imm8
  163. 3=11=No Z or X||100
  164.  
  165.  
  166. Spr.l Addr, X16, Y16, Z16
  167. 40 AAAA XXXX YYYY ZZZZ
  168.  
  169. Spr.l Addr, X8, Y8, Z8
  170. 6B AAAA XX YY ZZ
  171.  
  172. Spr.l Addr, VX, VY, VX
  173. 55 AAAA VX VY VX
  174.  
  175.  
  176. Polygon Format:
  177. [C0||Color] LL HH PP
  178. XX YY [...*PP]
  179.  
  180. GM Format:
  181. 02 RX RY NN
  182. CHHHHHHHb HH RX RY (MCCCCCCCb MM)
  183.  
  184. Screen Buffers:
  185. 0=Plain Color
  186. 1=Double Buffer
  187. 2=Double Buffer
  188. 3=Background
  189. 254=Visible Screen
  190. 255=Invisible Screen
  191.  
  192. Palette Format:
  193. 0000RRRRGGGGBBBBb
  194.  
  195. Compression:
  196. Backwards.
  197. [18:51] <@Seru-kun> https://github.com/fabiensanglard/Another-World-Bytecode-Interpreter/blob/master/bank.cpp
  198. [18:56] <@hcs> wow, yeah, that's pretty hard to read
  199. [18:57] <@hcs> but it looks like the whole getCode, nextChunk, rcr thing is just pulling off bits
  200. [18:58] <@hcs> everything is run backwards, for whatever reason
  201. [18:59] <@hcs> storage mode is indicated by two or three bit prefixes, these are what the ifs starting at 93 do
  202. [19:01] <@hcs> 00 is a string of literal bytes, the next three bits give the number-1, (that's the meaning of decUnk(8,0)
  203. [19:01] <@hcs> er, decUnk1(3,0)
  204. [19:02] <@hcs> decUnk2 looks like LZ77, with decUnk2(8) (prefix 01) you have a 8 bit backreference length
  205. [19:03] <@hcs> backref distance, rather
  206. [19:04] <@hcs> prefix 01 only does 2 bytes, but it can be 1 to 256 bytes back
  207. [19:05] <@hcs> notice how line 77 adds i, the backref distance, whereas most processing is done with decrements, so we're reaching back in the already decompressed data
  208. [19:06] <@hcs> The other prefixes are just different variations on the same theme, 111 is literals, 8 bit length + 8 + 1 (the second arg in decUnk1(8, 8) indicates an additional to the count)
  209. [19:06] <@hcs> *an addition
  210. [19:07] <@hcs> this nicely complements the decUnk1(3,0), which can give you up to 8, decUnk1(8,8) can give you from 9 to 255+9
  211. [19:08] <@hcs> 110 is followed by an 8 bit backreference length (-1) with is used by decUnk(12), so there's also a 12 bit backreference distance
  212. [19:09] <@hcs> 100 and 101 have a fixed length (3 and 4 respectively) and 9 or 10 bit backreference dists
  213.  
  214.  
  215.  
  216. Source Codes:
  217. code0:
  218.  
  219. start jsr init
  220. setvec 60 flip10
  221. seti v255 4
  222. seti v246 1
  223. seti v227 0
  224. seti v50 0
  225. break
  226. play 106 20 0 2
  227. play 106 20 0 3
  228. play 106 20 0 1
  229. play 106 20 0 0
  230. jsr initiz
  231. jsr setmar
  232. jsr inic
  233. jsr mun1
  234. setvec 20 nag1
  235. setvec 21 nag2
  236. setvec 20 mard1a
  237. seti v99 2
  238. si v4 = 48 suit
  239.  
  240.  
  241. code1:
  242.  
  243. snes1 setvec 1 fdera1
  244. zic01 song 4025 0 1
  245. setvec 2 derape
  246. setvec 3 plan1
  247. setvec 60 flip10
  248. bigend
  249. stopv bigend
  250. flip1 addi v199 1
  251. show 255
  252. setws 255
  253. si v250 <> 0 exit
  254. copy 64 255
  255. break
  256. jmp flip1
  257. flip10 addi v199 1
  258. show 255
  259. setws 255
  260. copy 0 255
  261. break
  262. addi v199 1
  263.  
  264.  
  265. code2:
  266.  
  267. room draw.s screen 228 85
  268. draw.s lester 110 101
  269. draw.s lines 160 100
  270. draw.s light 136 35
  271. color 17 255
  272. bigend
  273.  
  274.  
  275. code3:
  276.  
  277. step draw.s shoe1 229 98
  278. break
  279. draw.s shoe3 230 97
  280. break
  281. draw.s shoe5 230 97
  282. break
  283. draw.s shoe7 230 98
  284. break
  285. draw.s shoe9 229 97
  286. break
  287. draw.s shoe11 229 97
  288. sound 60 20 63 0
  289. break
  290. draw.s shoe13 230 97
  291. break
  292. draw.s shoe15 229 98
  293. break
  294. draw.s shoe17 230 97
  295. break
  296. draw.s shoe19 231 98
  297.  
  298.  
  299. code4:
  300.  
  301. load 45
  302. jmp snes1
  303. load 137
  304. load 2
  305. load 129
  306. load 3
  307. snes1 play 48 0 0 0
  308. play 48 0 0 1
  309. play 48 0 0 2
  310. play 48 0 0 3
  311. setvec 60 flip1
  312. seti v12 0
  313. seti v4 0
  314. seti v254 0
  315. seti v1 0
  316. seti v255 7
  317. break
  318. jsr prot1
  319. si v0 = 12 dessus
  320. si v0 > 12 start3
  321.  
  322.  
  323. code5:
  324.  
  325. fpis spr.s pis24 160 100
  326. spr.s pis1 160 100
  327. spr.s pis25 160 100
  328. spr.s pis11 160 100
  329. spr.s pis10 160 100
  330. spr.s pis2 160 100
  331. spr.s pis3 160 100
  332. spr.s pis7 160 100
  333. spr.s pis8 160 100
  334. spr.s pis9 160 100
  335. spr.s pis12 160 100
  336. spr.s pis13 160 100
  337. spr.s pis17 160 100
  338. spr.s pis18 160 100
  339. spr.s pis19 160 100
  340. spr.s pis20 160 100
  341. spr.s pis21 160 100
  342. spr.s pis26 160 100
  343. return
  344. bigend
  345.  
  346.  
  347. code6:
  348.  
  349. start jsr init
  350. zic01 song 4001 0 3
  351. seti v227 0
  352. si v219 = 0 snes2
  353. load 2002
  354. jmp snes1
  355. snes2 load 48
  356. load 50
  357. load 57
  358. load 62
  359. load 16
  360. load 8
  361. load 81
  362. load 49
  363. load 50
  364. load 53
  365. load 57
  366. load 58
  367.  
  368.  
  369. code7:
  370.  
  371. start jsr init
  372. seti v227 0
  373. seti v255 4
  374. seti v246 1
  375. seti v50 0
  376. seti v182 0
  377. seti v10 0
  378. seti v239 0
  379. si v191 = 1 hard
  380. seti v239 105
  381. hard jsr son1
  382. play 85 20 0 1
  383. play 85 20 0 2
  384. play 85 20 0 3
  385. play 85 20 0 0
  386. si v0 = 24 start2
  387. si v0 = 26 start3
  388. setvec 60 flip10
  389. ???
  390. jsr snes3
  391.  
  392.  
  393. code8:
  394.  
  395. desa setvec 34 desa2
  396. setvec 35 desa1
  397. setvec 20 joy2
  398. setvec 21 bal4
  399. setvec 0 first1
  400. seti v0 21
  401. jsr snes4
  402. jsr fond1
  403. bigend
  404. prot1 return
  405. set v248 v188
  406. andi v248 16
  407. return
  408. si v248 = 0 prot1a
  409. si v242 <> 4000 prot1a
  410. return
  411. prot1a vec 0 63 2
  412. setvec 60 stopv
  413. bigend
  414. dead1 break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement