|
| 1 | +import * as Comlink from 'comlink'; |
| 2 | + |
| 3 | +// __flex2__done__ |
| 4 | + |
| 5 | +function init(code, { asmsg, ioerrsmsg, cmdargmsg }) { |
| 6 | + self.Module = { |
| 7 | + locateFile: url => `../wasm/${url}`, |
| 8 | + arguments: ['-q', '-xx', '-L', 'code.asm'], |
| 9 | + print: (text) => console.log('stdout: ' + text), |
| 10 | + printErr: (text) => console.error('stderr: ' + text), |
| 11 | + preInit: () => { |
| 12 | + FS.writeFile('as.msg', asmsg); |
| 13 | + FS.writeFile('cmdarg.msg', cmdargmsg); |
| 14 | + FS.writeFile('ioerrs.msg', ioerrsmsg); |
| 15 | + FS.writeFile('code.asm', prelude + code); |
| 16 | + }, |
| 17 | + }; |
| 18 | + importScripts('../wasm/asl.js'); |
| 19 | + |
| 20 | + setTimeout(() => { |
| 21 | + |
| 22 | + console.log(self.Module.FS.readdir('/')); |
| 23 | + console.log(self.Module); |
| 24 | + }, 1000); |
| 25 | +} |
| 26 | + |
| 27 | +function build() { |
| 28 | +} |
| 29 | + |
| 30 | +Comlink.expose({ |
| 31 | + init, |
| 32 | + build, |
| 33 | +}); |
| 34 | + |
| 35 | +const prelude = `SonicMappingsVer := 2 |
| 36 | +
|
| 37 | +; macro to declare a mappings table (taken from Sonic 2 Hg disassembly) |
| 38 | +mappingsTable macro {INTLABEL} |
| 39 | +__LABEL__ label * |
| 40 | +.current_mappings_table := __LABEL__ |
| 41 | + endm |
| 42 | +
|
| 43 | +; macro to declare an entry in a mappings table (taken from Sonic 2 Hg disassembly) |
| 44 | +mappingsTableEntry macro ptr |
| 45 | + dc.ATTRIBUTE ptr-.current_mappings_table |
| 46 | + endm |
| 47 | +
|
| 48 | +spriteHeader macro {INTLABEL} |
| 49 | +__LABEL__ label * |
| 50 | + if SonicMappingsVer=1 |
| 51 | + dc.b ((__LABEL___End - __LABEL___Begin) / 5) |
| 52 | + elseif SonicMappingsVer=2 |
| 53 | + dc.w ((__LABEL___End - __LABEL___Begin) / 8) |
| 54 | + else |
| 55 | + dc.w ((__LABEL___End - __LABEL___Begin) / 6) |
| 56 | + endif |
| 57 | +__LABEL___Begin label * |
| 58 | + endm |
| 59 | +
|
| 60 | +spritePiece macro xpos,ypos,width,height,tile,xflip,yflip,pal,pri |
| 61 | + if SonicMappingsVer=1 |
| 62 | + dc.b ypos |
| 63 | + dc.b (((width-1)&3)<<2)|((height-1)&3) |
| 64 | + dc.b ((pri&1)<<7)|((pal&3)<<5)|((yflip&1)<<4)|((xflip&1)<<3)|((tile&$700)>>8) |
| 65 | + dc.b tile&$FF |
| 66 | + dc.b xpos |
| 67 | + elseif SonicMappingsVer=2 |
| 68 | + dc.w ((ypos&$FF)<<8)|(((width-1)&3)<<2)|((height-1)&3) |
| 69 | + dc.w ((pri&1)<<15)|((pal&3)<<13)|((yflip&1)<<12)|((xflip&1)<<11)|(tile&$7FF) |
| 70 | + dc.w ((pri&1)<<15)|((pal&3)<<13)|((yflip&1)<<12)|((xflip&1)<<11)|((tile>>1)&$7FF) |
| 71 | + dc.w xpos |
| 72 | + else |
| 73 | + dc.w ((ypos&$FF)<<8)|(((width-1)&3)<<2)|((height-1)&3) |
| 74 | + dc.w ((pri&1)<<15)|((pal&3)<<13)|((yflip&1)<<12)|((xflip&1)<<11)|(tile&$7FF) |
| 75 | + dc.w xpos |
| 76 | + endif |
| 77 | + endm |
| 78 | +
|
| 79 | +spritePiece2P macro xpos,ypos,width,height,tile,xflip,yflip,pal,pri,tile2,xflip2,yflip2,pal2,pri2 |
| 80 | + if SonicMappingsVer=1 |
| 81 | + dc.b ypos |
| 82 | + dc.b (((width-1)&3)<<2)|((height-1)&3) |
| 83 | + dc.b ((pri&1)<<7)|((pal&3)<<5)|((yflip&1)<<4)|((xflip&1)<<3)|((tile&$700)>>8) |
| 84 | + dc.b tile&$FF |
| 85 | + dc.b xpos |
| 86 | + elseif SonicMappingsVer=2 |
| 87 | + dc.w ((ypos&$FF)<<8)|(((width-1)&3)<<2)|((height-1)&3) |
| 88 | + dc.w ((pri&1)<<15)|((pal&3)<<13)|((yflip&1)<<12)|((xflip&1)<<11)|(tile&$7FF) |
| 89 | + dc.w ((pri2&1)<<15)|((pal2&3)<<13)|((yflip2&1)<<12)|((xflip2&1)<<11)|(tile2&$7FF) |
| 90 | + dc.w xpos |
| 91 | + else |
| 92 | + dc.w ((ypos&$FF)<<8)|(((width-1)&3)<<2)|((height-1)&3) |
| 93 | + dc.w ((pri&1)<<15)|((pal&3)<<13)|((yflip&1)<<12)|((xflip&1)<<11)|(tile&$7FF) |
| 94 | + dc.w xpos |
| 95 | + endif |
| 96 | + endm |
| 97 | +
|
| 98 | +dplcHeader macro {INTLABEL} |
| 99 | +__LABEL__ label * |
| 100 | + if SonicDplcVer=1 |
| 101 | + dc.b ((__LABEL___End - __LABEL___Begin) / 2) |
| 102 | + elseif SonicDplcVer=3 |
| 103 | + dc.w (((__LABEL___End - __LABEL___Begin) / 2)-1) |
| 104 | + else |
| 105 | + dc.w ((__LABEL___End - __LABEL___Begin) / 2) |
| 106 | + endif |
| 107 | +__LABEL___Begin label * |
| 108 | + endm |
| 109 | +
|
| 110 | +dplcEntry macro tiles,offset |
| 111 | + if SonicDplcVer=3 |
| 112 | + dc.w ((offset&$FFF)<<4)|((tiles-1)&$F) |
| 113 | + elseif SonicDplcVer=4 |
| 114 | + dc.w (((tiles-1)&$F)<<12)|((offset&$FFF)<<4) |
| 115 | + else |
| 116 | + dc.w (((tiles-1)&$F)<<12)|(offset&$FFF) |
| 117 | + endif |
| 118 | + endm |
| 119 | +
|
| 120 | +even macro |
| 121 | + if (*)&1 |
| 122 | +paddingSoFar set paddingSoFar+1 |
| 123 | + dc.b 0 ;ds.b 1 |
| 124 | + endif |
| 125 | + endm |
| 126 | +
|
| 127 | + cpu 68000 |
| 128 | +
|
| 129 | +Map_hud_a: mappingsTable |
| 130 | + mappingsTableEntry.w Map_hud_a_0008 |
| 131 | + mappingsTableEntry.w Map_hud_a_005A |
| 132 | + mappingsTableEntry.w Map_hud_a_00AC |
| 133 | + mappingsTableEntry.w Map_hud_a_00FE |
| 134 | +
|
| 135 | +Map_hud_a_0008: spriteHeader |
| 136 | + spritePiece 0, -$80, 4, 2, 0, 0, 0, 1, 0 |
| 137 | + spritePiece $20, -$80, 4, 2, $18, 0, 0, 1, 0 |
| 138 | + spritePiece $40, -$80, 4, 2, $20, 0, 0, 1, 0 |
| 139 | + spritePiece 0, -$70, 4, 2, $10, 0, 0, 1, 0 |
| 140 | + spritePiece $28, -$70, 4, 2, $28, 0, 0, 1, 0 |
| 141 | + spritePiece 0, -$60, 4, 2, 8, 0, 0, 1, 0 |
| 142 | + spritePiece $20, -$60, 1, 2, 0, 0, 0, 1, 0 |
| 143 | + spritePiece $30, -$60, 3, 2, $30, 0, 0, 1, 0 |
| 144 | + spritePiece 0, $40, 2, 2, $10A, 0, 0, 0, 0 |
| 145 | + spritePiece $10, $40, 4, 2, $10E, 0, 0, 1, 0 |
| 146 | +Map_hud_a_0008_End |
| 147 | +
|
| 148 | +Map_hud_a_005A: spriteHeader |
| 149 | + spritePiece 0, -$80, 4, 2, 0, 0, 0, 1, 0 |
| 150 | + spritePiece $20, -$80, 4, 2, $18, 0, 0, 1, 0 |
| 151 | + spritePiece $40, -$80, 4, 2, $20, 0, 0, 1, 0 |
| 152 | + spritePiece 0, -$70, 4, 2, $10, 0, 0, 1, 0 |
| 153 | + spritePiece $28, -$70, 4, 2, $28, 0, 0, 1, 0 |
| 154 | + spritePiece 0, -$60, 4, 2, 8, 0, 0, 0, 0 |
| 155 | + spritePiece $20, -$60, 1, 2, 0, 0, 0, 0, 0 |
| 156 | + spritePiece $30, -$60, 3, 2, $30, 0, 0, 1, 0 |
| 157 | + spritePiece 0, $40, 2, 2, $10A, 0, 0, 0, 0 |
| 158 | + spritePiece $10, $40, 4, 2, $10E, 0, 0, 1, 0 |
| 159 | +Map_hud_a_005A_End |
| 160 | +
|
| 161 | +Map_hud_a_00AC: spriteHeader |
| 162 | + spritePiece 0, -$80, 4, 2, 0, 0, 0, 1, 0 |
| 163 | + spritePiece $20, -$80, 4, 2, $18, 0, 0, 1, 0 |
| 164 | + spritePiece $40, -$80, 4, 2, $20, 0, 0, 1, 0 |
| 165 | + spritePiece 0, -$70, 4, 2, $10, 0, 0, 0, 0 |
| 166 | + spritePiece $28, -$70, 4, 2, $28, 0, 0, 1, 0 |
| 167 | + spritePiece 0, -$60, 4, 2, 8, 0, 0, 1, 0 |
| 168 | + spritePiece $20, -$60, 1, 2, 0, 0, 0, 1, 0 |
| 169 | + spritePiece $30, -$60, 3, 2, $30, 0, 0, 1, 0 |
| 170 | + spritePiece 0, $40, 2, 2, $10A, 0, 0, 0, 0 |
| 171 | + spritePiece $10, $40, 4, 2, $10E, 0, 0, 1, 0 |
| 172 | +Map_hud_a_00AC_End |
| 173 | +
|
| 174 | +Map_hud_a_00FE: spriteHeader |
| 175 | + spritePiece 0, -$80, 4, 2, 0, 0, 0, 1, 0 |
| 176 | + spritePiece $20, -$80, 4, 2, $18, 0, 0, 1, 0 |
| 177 | + spritePiece $40, -$80, 4, 2, $20, 0, 0, 1, 0 |
| 178 | + spritePiece 0, -$70, 4, 2, $10, 0, 0, 0, 0 |
| 179 | + spritePiece $28, -$70, 4, 2, $28, 0, 0, 1, 0 |
| 180 | + spritePiece 0, -$60, 4, 2, 8, 0, 0, 0, 0 |
| 181 | + spritePiece $20, -$60, 1, 2, 0, 0, 0, 0, 0 |
| 182 | + spritePiece $30, -$60, 3, 2, $30, 0, 0, 1, 0 |
| 183 | + spritePiece 0, $40, 2, 2, $10A, 0, 0, 0, 0 |
| 184 | + spritePiece $10, $40, 4, 2, $10E, 0, 0, 1, 0 |
| 185 | +Map_hud_a_00FE_End |
| 186 | +
|
| 187 | + even |
| 188 | + `; |
0 commit comments