SHARE
TWEET

Another World Byte codes

LuigiBlood Sep 17th, 2012 70 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top