├── .gitignore ├── ea_logo.raw ├── .vscode ├── settings.json ├── tasks.json └── launch.json ├── uae └── dh0 │ ├── c │ ├── uaedbg │ └── UAEquit │ └── s │ └── startup-sequence ├── intro-screenshot.png ├── scrollfont.raw ├── README.md ├── startup.i ├── Paranoimia-VectorLogo.asm ├── sunriders-music.S └── Paranoimia-VectorLogo-original.S /.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /ea_logo.raw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mnemo70/paranoimia-vector-logo/HEAD/ea_logo.raw -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cmake.configureOnOpen": false, 3 | "editor.tabSize": 8 4 | } -------------------------------------------------------------------------------- /uae/dh0/c/uaedbg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mnemo70/paranoimia-vector-logo/HEAD/uae/dh0/c/uaedbg -------------------------------------------------------------------------------- /uae/dh0/c/UAEquit: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mnemo70/paranoimia-vector-logo/HEAD/uae/dh0/c/UAEquit -------------------------------------------------------------------------------- /uae/dh0/s/startup-sequence: -------------------------------------------------------------------------------- 1 | sys:myprogram 2 | ; Quits the emulator at the end of the program 3 | ;UAEquit -------------------------------------------------------------------------------- /intro-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mnemo70/paranoimia-vector-logo/HEAD/intro-screenshot.png -------------------------------------------------------------------------------- /scrollfont.raw: -------------------------------------------------------------------------------- 1 | <x~30cg<<<~3c3ss?`v6l636gvpws6v6vvwsc3ffv`70c`f```3l`{cccc`c6cll @` ?~`cxxn?x`k~c~o~>c6k88`3cps``cc|pcns`wlCs60``csqsqpscgvsfgspsv{sw6g`` p0c??~?8?c>3?fc?8?3~?cc8` 0<`><<7gf6f676C3``ccc>?~~>?kacckog{ssgc~>>~> -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "type": "amigaassembly", 6 | "vasm": { 7 | "enabled": true, 8 | "command": "${config:amiga-assembly.binDir}/vasmm68k_mot", 9 | "args": [ 10 | "-m68000", 11 | "-Fhunk", 12 | "-linedebug" 13 | ] 14 | }, 15 | "vlink": { 16 | "enabled": true, 17 | "command": "${config:amiga-assembly.binDir}/vlink", 18 | "includes": "*.{asm,ASM}", 19 | "excludes": "", 20 | "exefilename": "../uae/dh0/myprogram", 21 | "entrypoint": "Paranoimia-VectorLogo-Modern.asm", 22 | "args": [ 23 | "-bamigahunk", 24 | "-Bstatic" 25 | //"-s", 26 | //"-S" 27 | ] 28 | }, 29 | "problemMatcher": [], 30 | "label": "amigaassembly: build", 31 | "group": { 32 | "kind": "build", 33 | "isDefault": true 34 | } 35 | } 36 | ] 37 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PARANOIMIA Vector Logo intro 2 | 3 | ![A screenshot of Paranoimia intro with the text PARANOIMIA drawn in 4 | white 3D lines on a black background with some floating stars. Above 5 | and below the 3D text are small blue bars with a scrolling 6 | text.](intro-screenshot.png "PARANOIMIA Vector Logo") 7 | 8 | ## Introduction 9 | 10 | This is a reconstruction of the infamous vector logo intro by 11 | Paranoimia on the Commodore Amiga. Uncredited in the intro were 12 | the coder Pwy and TSM of Sunriders, who created the music, which 13 | was assumably ripped from somewhere else. 14 | 15 | This disassembly was created with ReSource V6.06 directly in 16 | Commodore Amiga emulation and then tidied up a bit in ASM-One. 17 | 18 | ## Usage 19 | 20 | On an Amiga (or emulator), run the ASM-One or Asm-Pro assembler 21 | and load the source file "Paranoimia-VectorLogo-original.S" with 22 | the "r" command. Following that, assemble with "a" and run the 23 | intro with "j main", which jumps to the main entry point of the code. 24 | 25 | The modern version "Paranoimia-VectorLogo.asm" compiles with 26 | Visual Studio Code and the [Amiga Assembly extension](https://github.com/prb28/vscode-amiga-assembly). 27 | You probably need to adapt launch.json to your environment. This 28 | even works on an Amiga 3000 with 68060 processor now. 29 | 30 | ## Notes 31 | 32 | There are many things that could be optimized in the code, but 33 | it was probably intended for Amiga 500 machines. Code and data 34 | are scattered through memory, probably by using EXTERN directives 35 | with absolute addresses and also equates for memory buffers that 36 | are also absolute. 37 | 38 | If you want to change the vector logo you need to adjust the 39 | number of points and lines equates at the beginning of the file 40 | and change the values in the points_x, points_y and line_table 41 | tables. 42 | 43 | The music code was disassembled as-is and works. There is a 44 | release of the music's executable that includes assembler 45 | symbols, but I concentrated on the graphics code and did no 46 | commenting on the music code. 47 | 48 | ## Resources 49 | 50 | - [Demozoo](https://demozoo.org/productions/142591/) 51 | - [Kestra Amiga Demo Database](http://janeway.exotica.org.uk/release.php?id=17790) 52 | - [Pouet (Shinobi version)](https://www.pouet.net/prod.php?which=4023) 53 | 54 | ## Contact 55 | 56 | You can reach me at mnemotron \[at\] gmail.com. 57 | 58 | MnemoTron/Spreadpoint, 2025-02-26 -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "winuae", 6 | "request": "launch", 7 | "name": "WinUAE Debug (A500)", 8 | "stopOnEntry": false, 9 | "serverName": "localhost", 10 | "serverPort": 2345, 11 | "startEmulator": true, 12 | "trace": false, 13 | "exceptionMask": 60, 14 | "emulatorStartDelay": 1500, 15 | "emulator": "${workspaceFolder}/bin/winuae.exe", 16 | "emulatorWorkingDir": "${workspaceFolder}/bin", 17 | "program": "${workspaceFolder}/uae/dh0/myprogram", 18 | "options": [ 19 | "-s", 20 | "quickstart=a500,0", 21 | "-s", 22 | "filesystem=rw,dh0:${workspaceFolder}\\uae\\dh0", 23 | "-s", 24 | "debugging_trigger=SYS:myprogram", 25 | "-s", 26 | "debugging_features=gdbserver", 27 | "-r", 28 | "D:/Emu/Amiga/01_Roms/amiga-os-130.rom" 29 | ], 30 | "preLaunchTask": "amigaassembly: build" 31 | }, 32 | { 33 | "type": "amiga-assembly", 34 | "request": "launch", 35 | "name": "WinUAE Debug (A600)", 36 | "stopOnEntry": false, 37 | "program": "${workspaceFolder}/uae/dh0/myprogram", 38 | "trace": true, 39 | "remoteProgram": "SYS:myprogram", 40 | "emulatorType": "winuae", 41 | "emulatorArgs": [ 42 | "-s", 43 | "use_gui=false", 44 | "-s", 45 | "quickstart=A600,0", 46 | "-s", 47 | "filesystem=rw,dh0:${workspaceFolder}/uae/dh0", 48 | "-s", 49 | "debugmem_start=0x70000000", 50 | "-s", 51 | "debugmem_size=256", 52 | "-r", 53 | "D:/Emu/Amiga/01_Roms/amiga-os-205-a600.rom" 54 | ], 55 | "preLaunchTask": "amigaassembly: build" 56 | }, 57 | { 58 | "type": "amiga-assembly", 59 | "request": "launch", 60 | "name": "WinUAE Launch (A600)", 61 | "stopOnEntry": false, 62 | "program": "${workspaceFolder}/uae/dh0/myprogram", 63 | "emulatorType": "winuae", 64 | "emulatorArgs": [ 65 | "-s", 66 | "use_gui=false", 67 | "-s", 68 | "quickstart=A600,0", 69 | "-s", 70 | "filesystem=rw,dh0:${workspaceFolder}/uae/dh0", 71 | "-r", 72 | "D:/Emu/Amiga/01_Roms/amiga-os-205-a600.rom" 73 | ], 74 | "preLaunchTask": "amigaassembly: build" 75 | } 76 | ] 77 | } -------------------------------------------------------------------------------- /startup.i: -------------------------------------------------------------------------------- 1 | 2 | INTENASET = %1100000000100000 3 | ; ab-------cdefg-- 4 | ; a: SET/CLR Bit 5 | ; b: Master Bit 6 | ; c: Blitter Int 7 | ; d: Vert Blank Int 8 | ; e: Copper Int 9 | ; f: IO Ports/Timers 10 | ; g: Software Int 11 | 12 | DMASET = %1000001111100000 13 | ; a----bcdefghi--j 14 | ; a: SET/CLR Bit 15 | ; b: Blitter Priority 16 | ; c: Enable DMA 17 | ; d: Bit Plane DMA 18 | ; e: Copper DMA 19 | ; f: Blitter DMA 20 | ; g: Sprite DMA 21 | ; h: Disk DMA 22 | ; i..j: Audio Channel 0-3 23 | 24 | ; PRINTT 25 | ; PRINTT "MINI STARTUP BY STINGRAY/[S]CARAB^SCOOPEX" 26 | ; PRINTT " .oO LAST CHANGE: THU, 02-JAN-2020 Oo." 27 | ; PRINTT 28 | 29 | 30 | *************************************************** 31 | *** MACRO DEFINITION *** 32 | *************************************************** 33 | 34 | WAITBLIT MACRO 35 | tst.b $02(a6) 36 | .\@ btst #6,$02(a6) 37 | bne.b .\@ 38 | ENDM 39 | 40 | 41 | *************************************************** 42 | *** CLOSE DOWN SYSTEM - INIT PROGRAM *** 43 | *************************************************** 44 | 45 | START 46 | ; movem.l d0-a6,-(a7) 47 | move.l $4.w,a6 48 | lea .VARS_HW(pc),a5 49 | move.l a5,a1 50 | moveq #0,d0 51 | jsr -552(a6) ; OpenLibrary() 52 | move.l d0,.GFXbase-.VARS_HW(a5) 53 | beq.b .END 54 | move.l d0,a6 55 | move.l 34(a6),.OldView-.VARS_HW(a5) 56 | sub.l a1,a1 57 | bsr.w .DoView 58 | move.l $26(a6),.OldCop1-.VARS_HW(a5) ; Store old CL 1 59 | move.l $32(a6),.OldCop2-.VARS_HW(a5) ; Store old CL 2 60 | bsr .GetVBR 61 | move.l d0,.VBRptr-.VARS_HW(a5) 62 | move.l d0,a0 63 | 64 | *** Store Custom Regs *** 65 | 66 | lea $dff000,a6 ; base address 67 | move.w $10(a6),.ADK-.VARS_HW(a5) ; Store old ADKCON 68 | move.w $1C(a6),.INTENA-.VARS_HW(a5) ; Store old INTENA 69 | move.w $02(a6),.DMA-.VARS_HW(a5) ; Store old DMA 70 | move.w #$7FFF,d0 71 | bsr WaitRaster 72 | move.w d0,$9A(a6) ; Disable Interrupts 73 | move.w d0,$96(a6) ; Clear all DMA channels 74 | move.w d0,$9C(a6) ; Clear all INT requests 75 | 76 | move.l $6c(a0),.OldVBI-.VARS_HW(a5) 77 | lea .NewVBI(pc),a1 78 | move.l a1,$6c(a0) 79 | 80 | ; move.w #INTENASET!$C000,$9A(a6) ; set Interrupts+ BIT 14/15 81 | move.w #DMASET!$8200,$96(a6) ; set DMA + BIT 09/15 82 | 83 | bsr MAIN 84 | 85 | 86 | *************************************************** 87 | *** Restore Sytem Parameter etc. *** 88 | *************************************************** 89 | 90 | .END lea .VARS_HW(pc),a5 91 | lea $dff000,a6 92 | clr.l VBIptr-.VARS_HW(a5) 93 | 94 | move.w #$8000,d0 95 | or.w d0,.INTENA-.VARS_HW(a5) ; SET/CLR-Bit to 1 96 | or.w d0,.DMA-.VARS_HW(a5) ; SET/CLR-Bit to 1 97 | or.w d0,.ADK-.VARS_HW(a5) ; SET/CLR-Bit to 1 98 | subq.w #1,d0 99 | bsr WaitRaster 100 | move.w d0,$9A(a6) ; Clear all INT bits 101 | move.w d0,$96(a6) ; Clear all DMA channels 102 | move.w d0,$9C(a6) ; Clear all INT requests 103 | 104 | move.l .VBRptr(pc),a0 105 | move.l .OldVBI(pc),$6c(a0) 106 | 107 | move.l .OldCop1(pc),$80(a6) ; Restore old CL 1 108 | move.l .OldCop2(pc),$84(a6) ; Restore old CL 2 109 | move.w d0,$88(a6) ; start copper1 110 | move.w .INTENA(pc),$9A(a6) ; Restore INTENA 111 | move.w .DMA(pc),$96(a6) ; Restore DMAcon 112 | move.w .ADK(pc),$9E(a6) ; Restore ADKcon 113 | 114 | move.l .GFXbase(pc),a6 115 | move.l .OldView(pc),a1 ; restore old viewport 116 | bsr.b .DoView 117 | 118 | move.l a6,a1 119 | move.l $4.w,a6 120 | jsr -414(a6) ; Closelibrary() 121 | ; movem.l (a7)+,d0-a6 122 | moveq #0,d0 123 | rts 124 | 125 | 126 | .DoView jsr -222(a6) ; LoadView() 127 | jsr -270(a6) ; WaitTOF() 128 | jmp -270(a6) 129 | 130 | 131 | ******************************************* 132 | *** Get Address of the VBR *** 133 | ******************************************* 134 | 135 | .GetVBR move.l a5,-(a7) 136 | moveq #0,d0 ; default at $0 137 | move.l $4.w,a6 138 | btst #0,296+1(a6) ; 68010+? 139 | beq.b .is68k ; nope. 140 | lea .getit(pc),a5 141 | jsr -30(a6) ; SuperVisor() 142 | .is68k move.l (a7)+,a5 143 | rts 144 | 145 | .getit dc.w $4e7a,$0801 ; movec vbr,d0 146 | rte ; back to user state code 147 | 148 | 149 | ******************************************* 150 | *** VERTICAL BLANK (VBI) *** 151 | ******************************************* 152 | 153 | .NewVBI movem.l d0-a6,-(a7) 154 | move.l VBIptr(pc),d0 155 | beq.b .noVBI 156 | move.l d0,a0 157 | jsr (a0) 158 | .noVBI lea $dff09c,a6 159 | moveq #$20,d0 160 | move.w d0,(a6) 161 | move.w d0,(a6) ; twice to avoid a4k hw bug 162 | movem.l (a7)+,d0-a6 163 | rte 164 | 165 | ******************************************* 166 | *** DATA AREA FAST *** 167 | ******************************************* 168 | 169 | .VARS_HW 170 | .GFXname dc.b 'graphics.library',0,0 171 | .GFXbase dc.l 0 172 | .OldView dc.l 0 173 | .OldCop1 dc.l 0 174 | .OldCop2 dc.l 0 175 | .VBRptr dc.l 0 176 | .OldVBI dc.l 0 177 | .ADK dc.w 0 178 | .INTENA dc.w 0 179 | .DMA dc.w 0 180 | 181 | VBIptr dc.l 0 182 | 183 | WaitRaster 184 | .wait btst #0,$dff004+1 185 | bne.b .wait 186 | rts 187 | 188 | WaitRasterEnd 189 | .wait btst #0,$dff004+1 190 | beq.b .wait 191 | rts 192 | -------------------------------------------------------------------------------- /Paranoimia-VectorLogo.asm: -------------------------------------------------------------------------------- 1 | ******************************************************* 2 | * 3 | * PARANOIMIA Vector Cracktro 4 | * 5 | * Code: Pwy (Electronic Artists, NO) 6 | * Music: TSM (Sunriders, DE) 7 | * 8 | * Disassembled and modernized by MnemoTroN/Spreadpoint 9 | * in 2023 using ReSource V6.06. 10 | * 11 | * This is a slightly improved version of the source 12 | * including more compatible startup code. (P) 2025. 13 | * 14 | * Compiles in Visual Studio Code with the Amiga Assembly 15 | * extension: 16 | * https://github.com/prb28/vscode-amiga-assembly 17 | * 18 | ******************************************************* 19 | 20 | ; 3D starfield 21 | num_stars EQU 37 22 | 23 | ; 3D vector logo 24 | num_points EQU 37 25 | num_lines EQU 28 26 | 27 | **************************************************************************** 28 | 29 | opt o+ 30 | 31 | section main,code_c 32 | 33 | ; Uses startup code by StingRay 34 | include "startup.i" 35 | 36 | ; Main entry point. Called from startup.i 37 | 38 | MAIN: 39 | ; Clear BSS data. Kickstart 1.3 seems to mess that up. 40 | LEA starpostab,A0 41 | move.w #(stardatalength/4)-1,D0 42 | moveq #0,D1 43 | .clear 44 | move.l D1,(A0)+ 45 | dbra D0,.clear 46 | 47 | ;Initialize rotation vectors to their original content 48 | move.w #$3333,d0 49 | move.w d0,rot_a 50 | move.w d0,rot_b 51 | 52 | move.l #scrolltext,scrollpointer 53 | 54 | bsr init_bpl_pointers 55 | 56 | move.w #$0038,$DFF092 ;DDFSTRT 57 | move.w #$00D0,$DFF094 ;DDFSTOP 58 | move.w #$2041,$DFF08E ;DIWSTRT V=32,H=65 ($2041) 59 | ;following value seems wrong. $15FF works 60 | ; move.w #$35FF,$DFF090 ;DIWSTOP V=53,H=255 ($35FF) 61 | move.w #$15FF,$DFF090 ;DIWSTOP V=53,H=255 ($35FF) 62 | 63 | move.w #$0020,$DFF096 ;DMACON 64 | move.w #0,$DFF10A ;BPL2MOD 65 | 66 | move.w #$83C0,$DFF096 67 | move.w #$4000,$DFF09A 68 | 69 | move.l #copper_list,$DFF080 ;COP1LCH 70 | clr.w $DFF088 ;COPJMP1 71 | mainloop: 72 | move.l $DFF004,D0 ;VPOSR 73 | asr.l #8,D0 74 | cmp.w #$101,D0 75 | bne.s mainloop 76 | 77 | bsr clearplane 78 | bsr calc_vect 79 | bsr do_proj 80 | bsr draw_lines 81 | jsr music_tick 82 | bsr scroll_text 83 | bsr do_stars 84 | btst #6,$BFE001 85 | bne.s mainloop 86 | 87 | ; bsr sound_off 88 | rts 89 | 90 | ;MTN: Obsolete due to startup.i 91 | ;sound_off: 92 | ; clr.w $DFF0A8 93 | ; clr.w $DFF0B8 94 | ; clr.w $DFF0C8 95 | ; clr.w $DFF0D8 96 | ; move.w #15,$DFF096 97 | ; rts 98 | 99 | ;Set all bitplane pointers in the copper list 100 | 101 | init_bpl_pointers: 102 | move.l #ea_logo,D0 103 | move.w D0,ea_logo_ptr1+4 104 | move.w D0,ea_logo_ptr2+4 105 | swap D0 106 | move.w D0,ea_logo_ptr1 107 | move.w D0,ea_logo_ptr2 108 | 109 | move.l #stars_bpl1,D0 110 | move.w D0,cop_stars_ptr1+4 111 | swap D0 112 | move.w D0,cop_stars_ptr1 113 | 114 | move.l #stars_bpl2,D0 115 | move.w D0,cop_stars_ptr2+4 116 | swap D0 117 | move.w D0,cop_stars_ptr2 118 | 119 | move.l #text_bpl+2,D0 120 | move.w D0,cop_text_ptr1+4 121 | move.w D0,cop_text_ptr2+4 122 | move.w D0,cop_text_bpl_bottom1+4 123 | move.w D0,cop_text_bpl_bottom2+4 124 | swap D0 125 | move.w D0,cop_text_ptr1 126 | move.w D0,cop_text_ptr2 127 | move.w D0,cop_text_bpl_bottom1 128 | move.w D0,cop_text_bpl_bottom2 129 | 130 | ;Show vector bitplane skipping 30 lines at the top for over-drawing 131 | move.l #vector_buffer+30*40,D0 132 | move.w D0,cop_vector_ptr1+4 133 | move.w D0,cop_vector_ptr2+4 134 | move.w D0,cop_vector_ptr1a+4 135 | move.w D0,cop_vector_ptr2a+4 136 | move.w D0,cop_vector_ptr1b+4 137 | move.w D0,cop_vector_ptr2b+4 138 | swap D0 139 | move.w D0,cop_vector_ptr1 140 | move.w D0,cop_vector_ptr2 141 | move.w D0,cop_vector_ptr1a 142 | move.w D0,cop_vector_ptr2a 143 | move.w D0,cop_vector_ptr1b 144 | move.w D0,cop_vector_ptr2b 145 | rts 146 | 147 | *************** 148 | * SCROLL TEXT * 149 | *************** 150 | 151 | scroll_text: 152 | move.l #$000E000E,$DFF064 ;BLTAMOD/BLTDMOD 153 | move.l #text_bpl+2,$DFF050 ;BLTAPTR 154 | move.l #text_bpl,$DFF054 ;BLTDPTR 155 | move.l #$F9F00000,$DFF040 ;BLTCON0/BLTCON1 156 | ; Use blitter to scroll the text by one pixel 157 | move.w #7<<6+23,$DFF058 ;BLTSIZE 158 | .waitblit: 159 | btst #6,$DFF002 ;DMACONR 160 | bne.s .waitblit 161 | 162 | addq.b #1,scrollbitcnt 163 | cmp.b #8,scrollbitcnt 164 | bne.s scroll_done 165 | clr.b scrollbitcnt 166 | scroll_nextchar: 167 | clr.l D0 168 | move.l scrollpointer,A0 169 | move.b (A0)+,D0 170 | addq.l #1,scrollpointer 171 | tst.b D0 172 | bne.s scrollnotend 173 | move.l #scrolltext,scrollpointer 174 | bra.s scroll_nextchar 175 | 176 | scrollnotend: 177 | sub.w #$20,D0 178 | add.w D0,D0 179 | LEA fontoffsets,A0 180 | LEA fontdata,A1 181 | add.w (A0,D0.W),A1 182 | ;Text bitplane is displayed at +2 bytes for scroll oversize at 183 | ;the left. The new character is copied to additional +2 bytes 184 | ;outside of view on the right. 185 | LEA text_bpl+44,A2 186 | move.b 40(A1),(A2) 187 | move.b 80(A1),60(A2) 188 | move.b 120(A1),120(A2) 189 | move.b 160(A1),180(A2) 190 | move.b 200(A1),240(A2) 191 | move.b 240(A1),300(A2) 192 | move.b 280(A1),360(A2) 193 | scroll_done: 194 | rts 195 | 196 | ************** 197 | * STAR FIELD * 198 | ************** 199 | 200 | do_stars: 201 | ;starpostab stores (x,y,z) for each star in words 202 | moveq #num_stars-1,D3 203 | ;Prep for PRNG call 204 | LEA prnd_value,A3 205 | ;starrestoretab stores (star offset in bpl,bit number) in words 206 | LEA starpostab,A4 207 | LEA starrestoretab,A5 208 | 209 | LEA stars_bpl1,A1 210 | LEA stars_bpl2,A2 211 | starloop: 212 | 213 | ;Erase old star first 214 | move.w (A5),D0 ;get old offset 215 | bmi.s .skiperase 216 | move.w 2(A5),D1 ;get old bit 217 | ;Clear old star in both bitplanes 218 | bclr D1,(A1,D0.W) 219 | bclr D1,(A2,D0.W) 220 | .skiperase: 221 | move.w (A4)+,D4 ;3D x-pos 222 | move.w (A4)+,D5 ;3D y-pos 223 | move.w (A4),D6 ;3D z-pos 224 | subq.w #6,(A4)+ ;decrease stored z (distance) 225 | tst.w D6 226 | ble.s reinit_starpos 227 | ;Project 3D position to 2D screen coordinates 228 | ext.l D4 229 | ext.l D5 230 | divs.w D6,D4 231 | divs.w D6,D5 232 | add.w #160,D4 233 | bmi.s reinit_starpos 234 | add.w #128,D5 235 | bmi.s reinit_starpos 236 | cmp.w #319,D4 237 | bgt.s reinit_starpos 238 | cmp.w #255,D5 239 | bgt.s reinit_starpos 240 | mulu.w #40,D5 ;y * bytes per line 241 | move.w D4,D7 242 | lsr.w #3,D4 ;x/8 -> byte offset 243 | add.w D4,D5 244 | not.b D7 ;flip bit order in byte 245 | move.w D5,(A5)+ 246 | move.w D7,(A5)+ ;store new offset 247 | 248 | ;Check z distance for drawing color (different bitplanes) 249 | cmp.w #400,D6 250 | bgt.s star_depth1 251 | cmp.w #300,D6 252 | bgt.s star_depth2 253 | ;Set star in both bitplanes 254 | bset D7,(A1,D5.W) 255 | bset D7,(A2,D5.W) 256 | nextstar: 257 | dbra D3,starloop 258 | rts 259 | 260 | ;Set star only in bitplane 2 261 | star_depth2: 262 | bset D7,(A2,D5.W) 263 | bra.s nextstar 264 | 265 | ;Set star only in bitplane 1 266 | star_depth1: 267 | bset D7,(A1,D5.W) 268 | bra.s nextstar 269 | 270 | reinit_starpos: 271 | bsr.s update_starrnd 272 | move.w D0,-6(A4) 273 | bsr.s update_starrnd 274 | move.w D0,-4(A4) 275 | move.w #$300,-2(A4) 276 | bra.s nextstar 277 | 278 | ; Pseudo random number generator. Depends on HPOS, which makes it 279 | ; unfit for faster processors, resulting in equal values. 280 | 281 | update_starrnd: 282 | move.w $DFF006,D0 283 | muls.w (A3),D0 284 | add.w #4681,D0 285 | move.w D0,(A3) 286 | rts 287 | 288 | ****************** 289 | * 3D Vector Logo * 290 | ****************** 291 | 292 | calc_vect: 293 | addq.w #3,rot_a ;rotate around x-axis 294 | and.w #$1FF,rot_a 295 | addq.w #4,rot_b ;rotate around y-axis 296 | and.w #$1FF,rot_b 297 | bsr.s init_rot 298 | bsr calc_rot_b 299 | bsr calc_rot_a 300 | bsr calc_points 301 | rts 302 | 303 | ;Clear the vector bitplane with the Blitter 304 | clearplane: 305 | move.l #$01000000,$DFF040 ;BLTCON0/1 306 | move.l #vector_buffer+30*40,$DFF054 ;BLTDPTR 307 | move.w #0,$DFF066 ;BLTDMOD 308 | ;Optimized size of area to clear with Blitter 309 | move.w #128<<6+20,$DFF058 ;BLTSIZE 310 | rts 311 | 312 | ; Get Sine and Cosine from table 313 | ; input D0 = x 314 | ; output D1 = sin(x) 315 | ; output D2 = cos(x) 316 | get_sines: 317 | lea sine_data,A1 318 | add.w D0,D0 319 | move.w (A1,D0.W),D1 320 | lea cosine_data,A1 321 | move.w (A1,D0.W),D2 322 | rts 323 | 324 | init_rot: 325 | moveq #0,D1 326 | move.w #$4000,D2 327 | move.w D2,w57E64 328 | move.w D1,w57E66 329 | move.w D1,w57E68 330 | move.w D1,w57E6A 331 | move.w D2,w57E6C 332 | move.w D1,w57E6E 333 | move.w D1,w57E70 334 | move.w D1,w57E72 335 | move.w D2,w57E74 336 | rts 337 | 338 | calc_rot_b: 339 | move.w rot_b,D0 340 | bsr.s get_sines 341 | move.w D1,D3 342 | move.w D2,D4 343 | move.w w57E64,w57E52 344 | move.w w57E6A,w57E58 345 | move.w w57E70,w57E5E 346 | muls.w w57E66,D2 347 | muls.w w57E68,D1 348 | sub.l D1,D2 349 | lsl.l #2,D2 350 | swap D2 351 | move.w D2,w57E54 352 | move.w D3,D1 353 | move.w D4,D2 354 | muls.w w57E6C,D2 355 | muls.w w57E6E,D1 356 | sub.l D1,D2 357 | lsl.l #2,D2 358 | swap D2 359 | move.w D2,w57E5A 360 | move.w D3,D1 361 | move.w D4,D2 362 | muls.w w57E72,D2 363 | muls.w w57E74,D1 364 | sub.l D1,D2 365 | lsl.l #2,D2 366 | swap D2 367 | move.w D2,w57E60 368 | move.w D3,D1 369 | move.w D4,D2 370 | muls.w w57E66,D1 371 | muls.w w57E68,D2 372 | add.l D1,D2 373 | lsl.l #2,D2 374 | swap D2 375 | move.w D2,w57E56 376 | move.w D3,D1 377 | move.w D4,D2 378 | muls.w w57E6C,D1 379 | muls.w w57E6E,D2 380 | add.l D1,D2 381 | lsl.l #2,D2 382 | swap D2 383 | move.w D2,w57E5C 384 | muls.w w57E72,D3 385 | muls.w w57E74,D4 386 | add.l D3,D4 387 | lsl.l #2,D4 388 | swap D4 389 | move.w D4,w57E62 390 | 391 | move.l #w57E52,A1 392 | move.l #w57E64,A2 393 | moveq #8,D7 394 | .copy: 395 | move.w (A1)+,(A2)+ 396 | dbra D7,.copy 397 | rts 398 | 399 | calc_rot_a: 400 | move.w rot_a,D0 401 | bsr get_sines 402 | move.w D1,D3 403 | move.w D2,D4 404 | muls.w w57E64,D2 405 | muls.w w57E68,D1 406 | add.l D1,D2 407 | lsl.l #2,D2 408 | swap D2 409 | move.w D2,w57E52 410 | move.w D3,D1 411 | move.w D4,D2 412 | muls.w w57E6A,D2 413 | muls.w w57E6E,D1 414 | add.l D1,D2 415 | lsl.l #2,D2 416 | swap D2 417 | move.w D2,w57E58 418 | move.w D3,D1 419 | move.w D4,D2 420 | muls.w w57E70,D2 421 | muls.w w57E74,D1 422 | add.l D1,D2 423 | lsl.l #2,D2 424 | swap D2 425 | move.w D2,w57E5E 426 | neg.w D3 427 | move.w D3,D1 428 | move.w D4,D2 429 | move.w w57E66,w57E54 430 | move.w w57E6C,w57E5A 431 | move.w w57E72,w57E60 432 | muls.w w57E64,D1 433 | muls.w w57E68,D2 434 | add.l D1,D2 435 | lsl.l #2,D2 436 | swap D2 437 | move.w D2,w57E56 438 | move.w D3,D1 439 | move.w D4,D2 440 | muls.w w57E6A,D1 441 | muls.w w57E6E,D2 442 | add.l D1,D2 443 | lsl.l #2,D2 444 | swap D2 445 | move.w D2,w57E5C 446 | muls.w w57E70,D3 447 | muls.w w57E74,D4 448 | add.l D3,D4 449 | lsl.l #2,D4 450 | swap D4 451 | move.w D4,w57E62 452 | 453 | moveq #8,D7 454 | move.l #w57E52,A1 455 | move.l #w57E64,A2 456 | .copy: 457 | move.w (A1)+,(A2)+ 458 | dbra D7,.copy 459 | rts 460 | 461 | calc_points: 462 | moveq #num_points-1,D0 463 | move.l #points_x,A1 464 | move.l #points_y,A2 465 | move.l #points_rot_x,A4 466 | move.l #points_rot_y,A5 467 | move.l #points_rot_z,A6 468 | calcloop: 469 | move.w (A1)+,D1 470 | move.w D1,D4 471 | move.w (A2)+,D2 472 | move.w D2,D5 473 | moveq #0,D3 ;Z=0 474 | move.w D3,D6 475 | muls.w w57E64,D1 476 | muls.w w57E6A,D2 477 | muls.w w57E70,D3 478 | add.l D1,D2 479 | add.l D2,D3 480 | swap D3 481 | move.w D3,(A4)+ 482 | move.w D4,D1 483 | move.w D5,D2 484 | move.w D6,D3 485 | muls.w w57E66,D1 486 | muls.w w57E6C,D2 487 | muls.w w57E72,D3 488 | add.l D1,D2 489 | add.l D2,D3 490 | swap D3 491 | move.w D3,(A5)+ 492 | muls.w w57E68,D4 493 | muls.w w57E6E,D5 494 | muls.w w57E74,D6 495 | add.l D4,D5 496 | add.l D5,D6 497 | swap D6 498 | move.w D6,(A6)+ 499 | dbra D0,calcloop 500 | rts 501 | 502 | ; Project the points from three-dimensional space (x,y,z) 503 | ; to screen coordinates (x,y) 504 | 505 | do_proj: 506 | move.l #points_rot_x,A1 507 | move.l #points_rot_y,A2 508 | move.l #points_rot_z,A3 509 | move.l #points_proj_x,A4 510 | move.l #points_proj_y,A5 511 | moveq #num_points-1,D0 512 | projloop: 513 | move.w (A3)+,D3 514 | move.w (A1)+,D4 515 | move.w (A2)+,D5 516 | lsl.l #8,D4 517 | lsl.l #8,D5 518 | ext.l D4 519 | ext.l D5 520 | add.w #$100,D3 521 | tst.w D3 522 | bne.s .notzero 523 | moveq #1,D3 524 | .notzero: 525 | divs.w D3,D4 526 | divs.w D3,D5 527 | add.w #168,D4 528 | add.w #128,D5 529 | move.w D4,(A4)+ 530 | move.w D5,(A5)+ 531 | dbra D0,projloop 532 | rts 533 | 534 | draw_lines: 535 | move.l #points_proj_x,A4 536 | move.l #points_proj_y,A5 537 | move.l #line_table,A6 538 | moveq #num_lines-1,D0 539 | .loop: 540 | move.l (A6)+,D1 ;get start and end index 541 | subq.w #1,D1 542 | add.w D1,D1 543 | move.w (A4,D1.W),D2 ;draw end x 544 | move.w (A5,D1.W),D3 ;draw end y 545 | swap D1 ;get start index 546 | subq.w #1,D1 547 | add.w D1,D1 548 | move.w (A4,D1.W),A2 ;draw start x 549 | move.w (A5,D1.W),A3 ;draw start y 550 | move.l D0,-(SP) 551 | bsr.s draw_line 552 | move.l (SP)+,D0 553 | dbra D0,.loop 554 | rts 555 | 556 | draw_line: 557 | move.w D2,D0 558 | move.w D3,D1 559 | move.w A2,D2 560 | move.w A3,D3 561 | move.l #vector_buffer,A0 562 | sub.w D1,D3 563 | bpl.s lbC003152 564 | neg.w D3 565 | sub.w D0,D2 566 | bpl.s lbC003160 567 | neg.w D2 568 | cmp.w D3,D2 569 | bpl.s lbC003170 570 | moveq #13,D4 571 | bra.s lbC003180 572 | 573 | lbC003152: 574 | sub.w D0,D2 575 | bpl.s lbC003168 576 | neg.w D2 577 | cmp.w D3,D2 578 | bpl.s lbC003174 579 | moveq #9,D4 580 | bra.s lbC003180 581 | 582 | lbC003160: 583 | cmp.w D3,D2 584 | bpl.s lbC00317C 585 | moveq #5,D4 586 | bra.s lbC003180 587 | 588 | lbC003168: 589 | cmp.w D3,D2 590 | bpl.s lbC003178 591 | moveq #1,D4 592 | bra.s lbC003180 593 | 594 | lbC003170: 595 | moveq #29,D4 596 | bra.s lbC003182 597 | 598 | lbC003174: 599 | moveq #21,D4 600 | bra.s lbC003182 601 | 602 | lbC003178: 603 | moveq #17,D4 604 | bra.s lbC003182 605 | 606 | lbC00317C: 607 | moveq #25,D4 608 | bra.s lbC003182 609 | 610 | lbC003180: 611 | exg D3,D2 612 | lbC003182: 613 | move.w D2,D5 614 | addq.w #1,D5 615 | asl.w #6,D5 616 | addq.w #2,D5 617 | move.w D0,D6 618 | lsr.w #3,D0 619 | mulu.w #40,D1 620 | add.w D1,D0 621 | add.w D0,A0 622 | add.w D3,D3 623 | move.w D3,D7 624 | cmp.w D2,D7 625 | bpl.s lbC0031BA 626 | bset #6,D4 627 | sub.w D2,D7 628 | sub.w D2,D7 629 | bsr.s blitprio 630 | move.w D7,$DFF052 ;BLTAPTL 631 | add.w D7,D7 632 | move.w D7,$DFF064 ;BLTAMOD 633 | bra.s lbC0031D0 634 | 635 | lbC0031BA: 636 | bsr.s blitprio 637 | move.w D7,$DFF052 ;BLTAPTL 638 | sub.w D2,D7 639 | sub.w D2,D7 640 | add.w D7,D7 641 | move.w D7,$DFF064 ;BLTAMOD 642 | lbC0031D0: 643 | add.w D3,D3 644 | move.w D3,$DFF062 645 | ror.w #4,D6 646 | and.w #$F000,D6 647 | or.w #$0BFA,D6 648 | move.w #40,$DFF060 ;BLTCMOD 649 | move.l #$FFFFFFFF,$DFF044 ;BLTAFWM 650 | move.w #$8000,$DFF074 ;BLTADAT 651 | move.w D6,$DFF040 ;BLTCON0 652 | move.w D4,$DFF042 ;BLTCON1 653 | move.l A0,$DFF048 ;BLTCPTH 654 | move.l A0,$DFF054 ;BLTDPTH 655 | move.w D5,$DFF058 ;BLTSIZE 656 | rts 657 | 658 | blitprio: 659 | move.w #$8400,$DFF096 ;DMACON, set blitter prio 660 | .waitblit: 661 | btst #6,$DFF002 ;DMACONR 662 | bne.s .waitblit 663 | move.w #$400,$DFF002 ;Reset blitter prio 664 | rts 665 | 666 | scrolltext: 667 | dc.b ' THE LATEST CRACK FROM PARANOIMIA IS CALLED ' 668 | dc.b 'BEACH VOLLEY !!!!! THIS MAGIC IS DEDICATED ' 669 | dc.b 'TO JIMMY JAMES AND TERRI LEWIS OF FLYTE TIME ' 670 | dc.b 'PRODUCTIONS. WHAT THEY DID HAS ALWAYS BEEN ' 671 | dc.b 'EXTRAORDINARY AND FANTASTIC: NOW LET''S SPEND ' 672 | dc.b 'SOME TIME ON THE TOTAL OPPOSITE : KOTEX. ' 673 | dc.b 'A GROUP FULL OF LAMERS AND THEIR BOSS A ' 674 | dc.b 'PSEUDO - CRACKER, WHO IS THE MOST UGLY LOOKING ' 675 | dc.b 'GUY IN THE WORLD OF PIRACY. WHE HAS ONE ' 676 | dc.b 'ESSENTIALL TIP FOR HIM : TO IMPROVE YOUR IMAGE ' 677 | dc.b 'A LITTLE BIT YOU SHOULD START USING SHAMPOO TO ' 678 | dc.b 'WASH YOUR HAIR. THATS ENOUGH ABOUT QUARTEX ' 679 | dc.b 'FOR TODAY ',0 680 | 681 | EVEN 682 | 683 | ; Offset of the character data in the font bitmap (320x15 pixels). 684 | ; Starts with character 32 (space). 685 | fontoffsets: 686 | dc.w $14B,$1E,0,0,0,0,0,$1D 687 | dc.w $20,$21,0,0,$1C,0,$1B,$22 688 | dc.w $149,$140,$141,$142,$143,$144,$145,$146 689 | dc.w $147,$148,0,0,0,0,0,$1F 690 | dc.w 0,0,1,2,3,4,5,6 691 | dc.w 7,8,9,10,11,12,13,14 692 | dc.w 15,$10,$11,$12,$13,$14,$15,$16 693 | dc.w $17,$18,$19 694 | 695 | ; 37 3D point coordinates, split into separate x, y and z value tables. 696 | ; z is always zero, which could be optimized in the code. 697 | points_x: 698 | dc.w -400,-340,-340,-400,-400 699 | dc.w -320,-292,-260,-240,-180 700 | dc.w -180,-240,-240,-180,$FF60 701 | dc.w -132,-100,-80,-80,-20 702 | dc.w -20,0,0,60,60 703 | dc.w 80,80,100,100,140 704 | dc.w 180,180,200,200,220 705 | dc.w 252,280 706 | 707 | points_y: 708 | dc.w -60,-60,0,0,60 709 | dc.w 60,-60,60,-60,-60 710 | dc.w 0,0,60,60,60 711 | dc.w -60,60,-60,60,-60 712 | dc.w 60,-60,60,60,-60 713 | dc.w -60,60,-60,60,0 714 | dc.w -60,60,-60,60,60 715 | dc.w -60,60 716 | 717 | points_z: 718 | dc.w 0,0,0,0,0 719 | dc.w 0,0,0,0,0 720 | dc.w 0,0,0,0,0 721 | dc.w 0,0,0,0,0 722 | dc.w 0,0,0,0,0 723 | dc.w 0,0,0,0,0 724 | dc.w 0,0,0,0,0 725 | dc.w 0,0 726 | 727 | ; Line table defining (from,to) using point ids. 728 | ; Could be made zero-based saving a SUBQ. 729 | line_table: 730 | dc.w 1,2 731 | dc.w 2,3 732 | dc.w 3,4 733 | dc.w 1,5 734 | dc.w 6,7 735 | dc.w 7,8 736 | dc.w 9,10 737 | dc.w 10,11 738 | dc.w 11,12 739 | dc.w 9,13 740 | dc.w 12,14 741 | dc.w 15,$10 742 | dc.w $10,$11 743 | dc.w $12,$13 744 | dc.w $14,$15 745 | dc.w $12,$15 746 | dc.w $16,$17 747 | dc.w $17,$18 748 | dc.w $18,$19 749 | dc.w $19,$16 750 | dc.w $1A,$1B 751 | dc.w $1C,$1D 752 | dc.w $1C,$1E 753 | dc.w $1E,$1F 754 | dc.w $1F,$20 755 | dc.w $21,$22 756 | dc.w $23,$24 757 | dc.w $24,$25 758 | 759 | ; Sine data table 760 | sine_data: 761 | dc.w 0,$C9,$192,$25B,$324,$3ED,$4B5,$57E 762 | dc.w $646,$70E,$7D6,$89D,$964,$A2B,$AF1,$BB7 763 | dc.w $C7C,$D41,$E06,$ECA,$F8D,$1050,$1112,$11D3 764 | dc.w $1294,$1354,$1413,$14D2,$1590,$164C,$1709,$17C4 765 | dc.w $187E,$1937,$19EF,$1AA7,$1B5D,$1C12,$1CC6,$1D79 766 | dc.w $1E2B,$1EDC,$1F8C,$203A,$20E7,$2193,$223D,$22E7 767 | dc.w $238E,$2435,$24DA,$257E,$2620,$26C1,$2760,$27FE 768 | dc.w $289A,$2935,$29CE,$2A65,$2AFB,$2B8F,$2C21,$2CB2 769 | dc.w $2D41,$2DCF,$2E5A,$2EE4,$2F6C,$2FF2,$3076,$30F9 770 | dc.w $3179,$31F8,$3274,$32EF,$3368,$33DF,$3453,$34C6 771 | dc.w $3537,$35A5,$3612,$367D,$36E5,$374B,$37B0,$3812 772 | dc.w $3871,$38CF,$392B,$3984,$39DB,$3A30,$3A82,$3AD3 773 | dc.w $3B21,$3B6D,$3BB6,$3BFD,$3C42,$3C85,$3CC5,$3D03 774 | dc.w $3D3F,$3D78,$3DAF,$3DE3,$3E15,$3E45,$3E72,$3E9D 775 | dc.w $3EC5,$3EEB,$3F0F,$3F30,$3F4F,$3F6B,$3F85,$3F9C 776 | dc.w $3FB1,$3FC4,$3FD4,$3FE1,$3FEC,$3FF5,$3FFB,$3FFF 777 | cosine_data: 778 | dc.w $4000,$3FFF,$3FFB,$3FF5,$3FEC,$3FE1,$3FD4,$3FC4 779 | dc.w $3FB1,$3F9C,$3F85,$3F6B,$3F4F,$3F30,$3F0F,$3EEB 780 | dc.w $3EC5,$3E9D,$3E72,$3E45,$3E15,$3DE3,$3DAF,$3D78 781 | dc.w $3D3F,$3D03,$3CC5,$3C85,$3C42,$3BFD,$3BB6,$3B6D 782 | dc.w $3B21,$3AD3,$3A82,$3A30,$39DB,$3984,$392B,$38CF 783 | dc.w $3871,$3812,$37B0,$374B,$36E5,$367D,$3612,$35A5 784 | dc.w $3537,$34C6,$3453,$33DF,$3368,$32EF,$3274,$31F8 785 | dc.w $3179,$30F9,$3076,$2FF2,$2F6C,$2EE4,$2E5A,$2DCF 786 | dc.w $2D41,$2CB2,$2C21,$2B8F,$2AFB,$2A65,$29CE,$2935 787 | dc.w $289A,$27FE,$2760,$26C1,$2620,$257E,$24DA,$2435 788 | dc.w $238E,$22E7,$223D,$2193,$20E7,$203A,$1F8C,$1EDC 789 | dc.w $1E2B,$1D79,$1CC6,$1C12,$1B5D,$1AA7,$19EF,$1937 790 | dc.w $187E,$17C4,$1709,$164C,$1590,$14D2,$1413,$1354 791 | dc.w $1294,$11D3,$1112,$1050,$F8D,$ECA,$E06,$D41 792 | dc.w $C7C,$BB7,$AF1,$A2B,$964,$89D,$7D6,$70E 793 | dc.w $646,$57E,$4B5,$3ED,$324,$25B,$192,$C9 794 | dc.w 0,$FF37,$FE6E,$FDA5,$FCDC,$FC13,$FB4B,$FA82 795 | dc.w $F9BA,$F8F2,$F82A,$F763,$F69C,$F5D5,$F50F,$F449 796 | dc.w $F384,$F2BF,$F1FA,$F136,$F073,$EFB0,$EEEE,$EE2D 797 | dc.w $ED6C,$ECAC,$EBED,$EB2E,$EA70,$E9B4,$E8F7,$E83C 798 | dc.w $E782,$E6C9,$E611,$E559,$E4A3,$E3EE,$E33A,$E287 799 | dc.w $E1D5,$E124,$E074,$DFC6,$DF19,$DE6D,$DDC3,$DD19 800 | dc.w $DC72,$DBCB,$DB26,$DA82,$D9E0,$D93F,$D8A0,$D802 801 | dc.w $D766,$D6CB,$D632,$D59B,$D505,$D471,$D3DF,$D34E 802 | dc.w $D2BF,$D231,$D1A6,$D11C,$D094,$D00E,$CF8A,$CF07 803 | dc.w $CE87,$CE08,$CD8C,$CD11,$CC98,$CC21,$CBAD,$CB3A 804 | dc.w $CAC9,$CA5B,$C9EE,$C983,$C91B,$C8B5,$C850,$C7EE 805 | dc.w $C78F,$C731,$C6D5,$C67C,$C625,$C5D0,$C57E,$C52D 806 | dc.w $C4DF,$C493,$C44A,$C403,$C3BE,$C37B,$C33B,$C2FD 807 | dc.w $C2C1,$C288,$C251,$C21D,$C1EB,$C1BB,$C18E,$C163 808 | dc.w $C13B,$C115,$C0F1,$C0D0,$C0B1,$C095,$C07B,$C064 809 | dc.w $C04F,$C03C,$C02C,$C01F,$C014,$C00B,$C005,$C001 810 | dc.w $C000,$C001,$C005,$C00B,$C014,$C01F,$C02C,$C03C 811 | dc.w $C04F,$C064,$C07B,$C095,$C0B1,$C0D0,$C0F1,$C115 812 | dc.w $C13B,$C163,$C18E,$C1BB,$C1EB,$C21D,$C251,$C288 813 | dc.w $C2C1,$C2FD,$C33B,$C37B,$C3BE,$C403,$C44A,$C493 814 | dc.w $C4DF,$C52D,$C57E,$C5D0,$C625,$C67C,$C6D5,$C731 815 | dc.w $C78F,$C7EE,$C850,$C8B5,$C91B,$C983,$C9EE,$CA5B 816 | dc.w $CAC9,$CB3A,$CBAD,$CC21,$CC98,$CD11,$CD8C,$CE08 817 | dc.w $CE87,$CF07,$CF8A,$D00E,$D094,$D11C,$D1A6,$D231 818 | dc.w $D2BF,$D34E,$D3DF,$D471,$D505,$D59B,$D632,$D6CB 819 | dc.w $D766,$D802,$D8A0,$D93F,$D9E0,$DA82,$DB26,$DBCB 820 | dc.w $DC72,$DD19,$DDC3,$DE6D,$DF19,$DFC6,$E074,$E124 821 | dc.w $E1D5,$E287,$E33A,$E3EE,$E4A3,$E559,$E611,$E6C9 822 | dc.w $E782,$E83C,$E8F7,$E9B4,$EA70,$EB2E,$EBED,$ECAC 823 | dc.w $ED6C,$EE2D,$EEEE,$EFB0,$F073,$F136,$F1FA,$F2BF 824 | dc.w $F384,$F449,$F50F,$F5D5,$F69C,$F763,$F82A,$F8F2 825 | dc.w $F9BA,$FA82,$FB4B,$FC13,$FCDC,$FDA5,$FE6E,$FF37 826 | dc.w 0,$C9,$192,$25B,$324,$3ED,$4B5,$57E 827 | dc.w $646,$70E,$7D6,$89D,$964,$A2B,$AF1,$BB7 828 | dc.w $C7C,$D41,$E06,$ECA,$F8D,$1050,$1112,$11D3 829 | dc.w $1294,$1354,$1413,$14D2,$1590,$164C,$1709,$17C4 830 | dc.w $187E,$1937,$19EF,$1AA7,$1B5D,$1C12,$1CC6,$1D79 831 | dc.w $1E2B,$1EDC,$1F8C,$203A,$20E7,$2193,$223D,$22E7 832 | dc.w $238E,$2435,$24DA,$257E,$2620,$26C1,$2760,$27FE 833 | dc.w $289A,$2935,$29CE,$2A65,$2AFB,$2B8F,$2C21,$2CB2 834 | dc.w $2D41,$2DCF,$2E5A,$2EE4,$2F6C,$2FF2,$3076,$30F9 835 | dc.w $3179,$31F8,$3274,$32EF,$3368,$33DF,$3453,$34C6 836 | dc.w $3537,$35A5,$3612,$367D,$36E5,$374B,$37B0,$3812 837 | dc.w $3871,$38CF,$392B,$3984,$39DB,$3A30,$3A82,$3AD3 838 | dc.w $3B21,$3B6D,$3BB6,$3BFD,$3C42,$3C85,$3CC5,$3D03 839 | dc.w $3D3F,$3D78,$3DAF,$3DE3,$3E15,$3E45,$3E72,$3E9D 840 | dc.w $3EC5,$3EEB,$3F0F,$3F30,$3F4F,$3F6B,$3F85,$3F9C 841 | dc.w $3FB1,$3FC4,$3FD4,$3FE1,$3FEC,$3FF5,$3FFB,$3FFF 842 | ; dc.w $4000 843 | 844 | EVEN 845 | 846 | ;Font data for scroller 847 | ;1 bitplane, 320x16 848 | ;Copied by CPU so doesn't need to be in chip RAM 849 | 850 | fontdata: 851 | incbin "scrollfont.raw" 852 | 853 | ; The famous music 854 | 855 | include "sunriders-music.S" 856 | 857 | section chipdata,data_c 858 | copper_list: 859 | dc.w $2001,$FFFE 860 | 861 | dc.w $0100,$4600 ;BPLCON0, enable bitplanes 862 | 863 | ;Set $E0/$E8 to vector bitplane to prevent bitplane data rollover 864 | ;previous frame 865 | dc.w $0108,-40 866 | dc.w $00E0 ;BPL1PTH vector bitplane 867 | cop_vector_ptr1a: 868 | dc.w 0 869 | dc.w $00E2 870 | dc.w 0 871 | dc.w $00E8 ;BPL3PTH vector bitplane 872 | cop_vector_ptr2a: 873 | dc.w 0 874 | dc.w $00EA 875 | dc.w 0 876 | 877 | dc.w $00E4 878 | cop_stars_ptr1: 879 | dc.w 0 ;BPL2PTH stars bitplane A 880 | dc.w $00E6 881 | dc.w 0 882 | dc.w $00EC 883 | cop_stars_ptr2: 884 | dc.w 0 ;BPL4PTH stars bitplane B 885 | dc.w $00EE,0 886 | dc.w $0186,$0FFF ;COLOR03 887 | 888 | dc.w $3207,$FFFE 889 | dc.w $0180,$000A ;COLOR00 890 | 891 | dc.w $3307,$FFFE 892 | dc.w $0180,$000C ;COLOR00 893 | 894 | dc.w $3507,$FFFE 895 | dc.w $00E0 896 | cop_text_ptr1: 897 | dc.w 0 ;BPL1PTH text bitplane 898 | dc.w $00E2 899 | dc.w 0 900 | dc.w $00E8 901 | cop_text_ptr2: 902 | dc.w 0 ;BPL3PTH text bitplane 903 | dc.w $00EA 904 | dc.w 0 905 | dc.w $0108,20 ;BPL1MOD, skip 20 bytes 906 | 907 | dc.w $3E07,$FFFE 908 | dc.w $0180,$000A ;COLOR00 909 | 910 | dc.w $3F07,$FFFE 911 | dc.w $0180,$0000 ;COLOR00 912 | 913 | ;Removed wait so star bitplane won't show between scroller and vectors 914 | ; dc.w $4007,$FFFE 915 | 916 | dc.w $00E0 ;BPL1PTH vector bitplane 917 | cop_vector_ptr1: 918 | dc.w 0 919 | dc.w $00E2 920 | dc.w 0 921 | dc.w $00E8 ;BPL3PTH vector bitplane 922 | cop_vector_ptr2: 923 | dc.w 0 924 | dc.w $00EA 925 | dc.w 0 926 | dc.w $0108,$0000 ;BPL1MOD, no skip 927 | dc.w $0192,$0777 ;COLOR09 928 | dc.w $0194,$0BBB ;COLOR10 929 | dc.w $0196,$0FFF ;COLOR11 930 | 931 | dc.w $EA07,$FFFE 932 | dc.w $00E0 ;BPL1PTH credits logo 933 | ea_logo_ptr1: 934 | dc.w 0 935 | dc.w $00E2,0 936 | dc.w $00E8 ;BPL3PTH credits logo 937 | ea_logo_ptr2: 938 | dc.w 0 939 | dc.w $00EA,0 940 | ; dc.w $0108,$0000 ;BPL1MOD 941 | 942 | dc.w $EF07,$FFFE 943 | dc.w $0186,$0000 ;COLOR03 944 | dc.w $0100,$4600 ;BPLCON0 945 | 946 | dc.w $F207,$FFFE 947 | dc.w $0180,$000A ;COLOR00 948 | dc.w $0186,$000A ;COLOR03 949 | 950 | dc.w $F307,$FFFE 951 | dc.w $0180,$000C ;COLOR00 952 | dc.w $0186,$000C ;COLOR03 953 | 954 | dc.w $F507,$FFFE 955 | dc.w $00E0 956 | cop_text_bpl_bottom1: 957 | dc.w 0 ;text bitplane 958 | dc.w $00E2 959 | dc.w 0 960 | dc.w $0186,$0FFF ;COLOR03 961 | dc.w $00E8 962 | cop_text_bpl_bottom2: 963 | dc.w 0 ;text bitplane 964 | dc.w $00EA 965 | dc.w 0 966 | 967 | dc.w $0108,20 ;BPL1MOD, skip 20 bytes 968 | 969 | dc.w $FE07,$FFFE 970 | dc.w $0180,$000A ;COLOR00 971 | 972 | dc.w $FF07,$FFFE 973 | dc.w $0180,$0000 ;COLOR00 974 | 975 | dc.w $0108,-40 976 | dc.w $00E0 ;BPL1PTH vector bitplane 977 | cop_vector_ptr1b: 978 | dc.w 0 979 | dc.w $00E2 980 | dc.w 0 981 | dc.w $00E8 ;BPL3PTH vector bitplane 982 | cop_vector_ptr2b: 983 | dc.w 0 984 | dc.w $00EA 985 | dc.w 0 986 | 987 | dc.w $FFDF,$FFFE 988 | dc.w $2007,$FFFE 989 | dc.w $0100,$0600 ;BPLCON0, disable bitplanes 990 | dc.w $FFFF,$FFFE 991 | 992 | ; Electronic Artists logo 993 | ; 1 bitplane 320x? 994 | ea_logo: 995 | INCBIN "ea_logo.raw" 996 | 997 | section screens,bss_c 998 | 999 | ;Scrolltext bitplane with overscan 1000 | text_bpl ds.b 60*10 1001 | 1002 | ;Starfield bitplanes 1003 | stars_bpl1: ds.b 256*40 1004 | stars_bpl2: ds.b 256*40 1005 | 1006 | ;Vector bitplane has oversize on top and bottom 1007 | vector_buffer: ds.b (280+60)*40 1008 | 1009 | section data,bss 1010 | 1011 | prnd_value: ds.w 1 1012 | scrollbitcnt: ds.b 1 1013 | even 1014 | scrollpointer: ds.l 1 1015 | 1016 | ; Vector rotation angles 1017 | ; Initialized to $3333 in the unpacked data, which probably was 1018 | ; not intentional, but sets the rotation to a specific start. 1019 | rot_b: ds.w 1 1020 | rot_a: ds.w 1 1021 | 1022 | ; Temporary variables for vector calculation 1023 | w57E52: ds.w 1 1024 | w57E54: ds.w 1 1025 | w57E56: ds.w 1 1026 | w57E58: ds.w 1 1027 | w57E5A: ds.w 1 1028 | w57E5C: ds.w 1 1029 | w57E5E: ds.w 1 1030 | w57E60: ds.w 1 1031 | w57E62: ds.w 1 1032 | 1033 | w57E64: ds.w 1 1034 | w57E66: ds.w 1 1035 | w57E68: ds.w 1 1036 | w57E6A: ds.w 1 1037 | w57E6C: ds.w 1 1038 | w57E6E: ds.w 1 1039 | w57E70: ds.w 1 1040 | w57E72: ds.w 1 1041 | w57E74: ds.w 1 1042 | 1043 | ;star positions in 3D 1044 | starpostab: ds.w num_stars*3 + 3 1045 | 1046 | ;star positions to clear as word offset and bit number 1047 | starrestoretab: ds.w num_stars*2 + 2 1048 | 1049 | stardatalength EQU *-starpostab 1050 | 1051 | ; Destination arrays for vector calculations 1052 | points_rot_x: ds.w num_points 1053 | points_rot_y: ds.w num_points 1054 | points_rot_z: ds.w num_points 1055 | points_proj_x: ds.w num_points 1056 | points_proj_y: ds.w num_points 1057 | -------------------------------------------------------------------------------- /sunriders-music.S: -------------------------------------------------------------------------------- 1 | music_tick: 2 | movem.l D0-D7/A0-A6,-(SP) 3 | lea musicdata(PC),A6 4 | tst.b $10(A6) 5 | bne.s lbC000028 6 | bsr lbC0000D4 7 | bra.s lbC00002C 8 | 9 | lbC000028: 10 | bsr lbC0001B6 11 | lbC00002C: 12 | addq.b #1,$10(A6) 13 | move.b $10(A6),D0 14 | cmp.b $12(A6),D0 15 | bne.w lbC0000BA 16 | clr.b $10(A6) 17 | addq.b #1,$11(A6) 18 | cmp.b #$10,$11(A6) 19 | bne.s lbC0000A0 20 | clr.b $11(A6) 21 | addq.w #1,$14(A6) 22 | lea $22E(A6),A1 23 | lbC000058: 24 | clr.l D0 25 | move.w $14(A6),D0 26 | mulu.w #$14,D0 27 | tst.l (A1,D0.W) 28 | bne.s lbC00006E 29 | clr.w $14(A6) 30 | bra.s lbC000058 31 | 32 | lbC00006E: 33 | move.l $16(A6),A0 34 | move.l (A1,D0.W),(A0) 35 | move.l 4(A1,D0.W),$68(A0) 36 | move.l 8(A1,D0.W),$D0(A0) 37 | move.l 12(A1,D0.W),$138(A0) 38 | move.b $10(A1,D0.W),$66(A0) 39 | move.b $11(A1,D0.W),$CE(A0) 40 | move.b $12(A1,D0.W),$136(A0) 41 | move.b $13(A1,D0.W),$19E(A0) 42 | lbC0000A0: 43 | move.l $16(A6),A0 44 | moveq #3,D7 45 | lbC0000A6: 46 | bsr lbC00037E 47 | bsr lbC0001F6 48 | lea $68(A0),A0 49 | dbra D7,lbC0000A6 50 | bra.s lbC0000CE 51 | 52 | lbC0000BA: 53 | move.l $16(A6),A0 54 | moveq #3,D7 55 | lbC0000C0: 56 | bsr lbC0001F6 57 | lea $68(A0),A0 58 | dbra D7,lbC0000C0 59 | lbC0000CE: 60 | movem.l (SP)+,D0-D7/A0-A6 61 | rts 62 | 63 | lbC0000D4: 64 | move.l $16(A6),A0 65 | clr.w D6 66 | tst.w $1A(A0) 67 | beq.s lbC0000E4 68 | bset #0,D6 69 | lbC0000E4: 70 | tst.w $82(A0) 71 | beq.s lbC0000EE 72 | bset #1,D6 73 | lbC0000EE: 74 | tst.w $EA(A0) 75 | beq.s lbC0000F8 76 | bset #2,D6 77 | lbC0000F8: 78 | tst.w $152(A0) 79 | beq.s lbC000102 80 | bset #3,D6 81 | lbC000102: 82 | move.w D6,$DFF096 83 | lea $DFF0A0,A1 84 | move.l $16(A6),A0 85 | moveq #3,D7 86 | lbC000114: 87 | move.b $15(A0),9(A1) 88 | move.w $20(A0),6(A1) 89 | tst.w $1A(A0) 90 | beq.s lbC000130 91 | move.l $16(A0),(A1) 92 | move.w $1A(A0),4(A1) 93 | lbC000130: 94 | lea $68(A0),A0 95 | lea $10(A1),A1 96 | dbra D7,lbC000114 97 | move.l $16(A6),A0 98 | lea $22(A0),A0 99 | moveq #7,D0 100 | lbC00014C: 101 | move.l $158(A0),$138(A0) 102 | move.l $F0(A0),$D0(A0) 103 | move.l $88(A0),$68(A0) 104 | move.l $20(A0),(A0)+ 105 | dbra D0,lbC00014C 106 | move.w #$100,D0 107 | lbC00016A: 108 | dbra D0,lbC00016A 109 | ori.w #$8000,D6 110 | move.w D6,$DFF096 111 | move.l $16(A6),A0 112 | lea $DFF0A0,A1 113 | moveq #3,D7 114 | lbC000184: 115 | tst.w $1A(A0) 116 | beq.s lbC0001A4 117 | clr.l D1 118 | move.w $1C(A0),D1 119 | lsl.l #1,D1 120 | move.l $16(A0),A2 121 | adda.l D1,A2 122 | move.l A2,(A1) 123 | move.w $1E(A0),4(A1) 124 | clr.w $1A(A0) 125 | lbC0001A4: 126 | lea $68(A0),A0 127 | lea $10(A1),A1 128 | dbra D7,lbC000184 129 | rts 130 | 131 | lbC0001B6: 132 | lea $DFF0A0,A1 133 | move.l $16(A6),A0 134 | moveq #3,D7 135 | lbC0001C2: 136 | move.b $15(A0),9(A1) 137 | move.w $20(A0),6(A1) 138 | btst #0,$14(A0) 139 | beq.s lbC0001E4 140 | lea $22(A0),A2 141 | moveq #7,D0 142 | lbC0001DC: 143 | move.l $20(A2),(A2)+ 144 | dbra D0,lbC0001DC 145 | lbC0001E4: 146 | lea $68(A0),A0 147 | lea $10(A1),A1 148 | dbra D7,lbC0001C2 149 | rts 150 | 151 | lbC0001F6: 152 | tst.b $14(A0) 153 | bmi lbC00037C 154 | move.l 4(A0),A1 155 | move.l (A1),A2 156 | move.w $10(A0),D0 157 | clr.w D1 158 | move.b (A2,D0.W),D1 159 | moveq #0,D2 160 | move.b 12(A0),D2 161 | mulu.w D2,D1 162 | lsr.w #7,D1 163 | move.b D1,$15(A0) 164 | lea $46(A6),A2 165 | lea $5A2(A6),A3 166 | clr.l D5 167 | move.b 14(A0),D5 168 | lsl.w #3,D5 169 | moveq #0,D6 170 | move.b 15(A0),D6 171 | add.w D6,D5 172 | move.w 8(A0),D0 173 | move.l 8(A1),A4 174 | move.w $64(A0),D1 175 | clr.w D2 176 | move.b (A4,D1.W),D2 177 | move.w $62(A0),D3 178 | bpl.s lbC00024E 179 | neg.w D3 180 | lbC00024E: 181 | sub.w #$4000,D3 182 | muls.w D2,D3 183 | lsr.l #6,D3 184 | lsr.l #6,D3 185 | add.w D3,D0 186 | move.w D0,D1 187 | lsr.w #8,D1 188 | sub.b (A3,D5.W),D1 189 | lsl.w #1,D1 190 | move.w (A2,D1.W),D3 191 | and.w #$FF,D0 192 | beq.s lbC000280 193 | move.w 2(A2,D1.W),D4 194 | move.w #$100,D2 195 | sub.w D0,D2 196 | mulu.w D0,D4 197 | mulu.w D2,D3 198 | add.l D4,D3 199 | lsr.l #8,D3 200 | lbC000280: 201 | move.w D3,$20(A0) 202 | btst #0,$14(A0) 203 | beq.s lbC0002FA 204 | move.w $12(A0),D0 205 | move.l $12(A1),A2 206 | moveq #0,D1 207 | move.b (A2,D0.W),D1 208 | move.w #$80,D0 209 | sub.w D1,D0 210 | move.w #$1F,D4 211 | lea $42(A0),A2 212 | move.l $1A(A1),A3 213 | tst.l $1E(A1) 214 | beq.s lbC0002D0 215 | move.l $1E(A1),A4 216 | lbC0002B8: 217 | move.b (A3)+,D2 218 | ext.w D2 219 | move.b (A4)+,D3 220 | ext.w D3 221 | muls.w D0,D2 222 | muls.w D1,D3 223 | add.w D2,D3 224 | asr.w #7,D3 225 | move.b D3,(A2)+ 226 | dbra D4,lbC0002B8 227 | bra.s lbC0002FA 228 | 229 | lbC0002D0: 230 | btst #1,$14(A0) 231 | beq.s lbC0002DC 232 | move.l A2,A3 233 | lbC0002DC: 234 | bset #1,$14(A0) 235 | move.b $1F(A3),D3 236 | ext.w D3 237 | lbC0002E8: 238 | move.b (A3)+,D2 239 | ext.w D2 240 | muls.w D0,D2 241 | muls.w D1,D3 242 | add.w D2,D3 243 | asr.w #7,D3 244 | move.b D3,(A2)+ 245 | dbra D4,lbC0002E8 246 | lbC0002FA: 247 | move.w 10(A0),D0 248 | add.w D0,8(A0) 249 | clr.w D0 250 | clr.w D1 251 | move.b 13(A0),D0 252 | ext.w D0 253 | move.b 12(A0),D1 254 | add.w D0,D1 255 | bpl.s lbC000318 256 | clr.b D1 257 | bra.s lbC000322 258 | 259 | lbC000318: 260 | cmp.w #$81,D1 261 | bmi.s lbC000322 262 | move.w #$80,D1 263 | lbC000322: 264 | move.b D1,12(A0) 265 | addq.b #1,15(A0) 266 | and.b #7,15(A0) 267 | addq.w #1,$10(A0) 268 | move.w $10(A0),D0 269 | cmp.w 4(A1),D0 270 | bne.s lbC000344 271 | move.w 6(A1),$10(A0) 272 | lbC000344: 273 | move.w $10(A1),D0 274 | add.w D0,$62(A0) 275 | addq.w #1,$64(A0) 276 | move.w $64(A0),D0 277 | cmp.w 12(A1),D0 278 | bne.s lbC000360 279 | move.w 14(A1),$64(A0) 280 | lbC000360: 281 | btst #0,$14(A0) 282 | beq.s lbC00037C 283 | addq.w #1,$12(A0) 284 | move.w $12(A0),D0 285 | cmp.w $16(A1),D0 286 | bne.s lbC00037C 287 | move.w $18(A1),$12(A0) 288 | lbC00037C: 289 | rts 290 | 291 | lbC00037E: 292 | move.l (A0),A1 293 | lbC000380: 294 | move.b (A1)+,D0 295 | beq lbC00047E 296 | bpl.s lbC0003DE 297 | cmp.b #$B8,D0 298 | bpl lbC000468 299 | cmp.b #$9C,D0 300 | bne.s lbC0003A0 301 | move.b (A1)+,14(A0) 302 | clr.b 15(A0) 303 | bra.s lbC000380 304 | 305 | lbC0003A0: 306 | cmp.b #$9B,D0 307 | bne.s lbC0003B2 308 | clr.w D0 309 | move.b (A1)+,D0 310 | ext.w D0 311 | move.w D0,10(A0) 312 | bra.s lbC000380 313 | 314 | lbC0003B2: 315 | cmp.b #$9A,D0 316 | bne.s lbC0003BE 317 | move.b (A1)+,13(A0) 318 | bra.s lbC000380 319 | 320 | lbC0003BE: 321 | cmp.b #$99,D0 322 | bne.s lbC0003D2 323 | move.b (A1)+,D1 324 | lsl.b #1,D1 325 | move.b D1,12(A0) 326 | clr.b 13(A0) 327 | bra.s lbC000380 328 | 329 | lbC0003D2: 330 | cmp.b #$98,D0 331 | bne.s lbC0003DC 332 | move.b (A1)+,$12(A6) 333 | lbC0003DC: 334 | bra.s lbC000380 335 | 336 | lbC0003DE: 337 | btst #6,D0 338 | beq.s lbC00042A 339 | lea $D6(A6),A2 340 | sub.b #$40,D0 341 | clr.l D1 342 | move.b D0,D1 343 | mulu.w #$22,D1 344 | lea (A2,D1.W),A3 345 | move.l A3,4(A0) 346 | clr.l 14(A0) 347 | clr.w $12(A0) 348 | clr.l $62(A0) 349 | move.b #1,$14(A0) 350 | lea $22(A0),A4 351 | move.l A4,$16(A0) 352 | move.w #$10,$1A(A0) 353 | clr.w $1C(A0) 354 | move.w #$10,$1E(A0) 355 | bra lbC000380 356 | 357 | lbC00042A: 358 | subq.b #1,D0 359 | lea $22A(A6),A2 360 | clr.l D1 361 | move.b D0,D1 362 | mulu.w #$1C,D1 363 | lea (A2,D1.W),A3 364 | move.l A3,4(A0) 365 | clr.l 14(A0) 366 | clr.b $14(A0) 367 | clr.l $62(A0) 368 | move.l $12(A3),$16(A0) 369 | move.w $16(A3),$1A(A0) 370 | move.w $18(A3),$1C(A0) 371 | move.w $1A(A3),$1E(A0) 372 | bra lbC000380 373 | 374 | lbC000468: 375 | not.b D0 376 | sub.b $66(A0),D0 377 | move.b D0,8(A0) 378 | clr.b 9(A0) 379 | clr.w 10(A0) 380 | bra lbC000380 381 | 382 | lbC00047E: 383 | move.l A1,(A0) 384 | rts 385 | 386 | musicdata: 387 | dc.b 0,0,0,0,0,0,0,0,0,0,0,0 388 | dc.b 0 389 | dc.b $FC 390 | dc.b 12 391 | dc.b $D8 392 | dc.b 4 393 | dc.b 15 394 | dc.b 5 395 | dc.b 0 396 | dc.b 0 397 | dc.b $1F 398 | dc.l lbL00106E 399 | dc.l 0 400 | dc.l 0 401 | dc.l 0 402 | dc.l 0 403 | dc.l 0 404 | dc.l 0 405 | dc.l 0 406 | dc.l 0 407 | dc.l 0 408 | dc.l 0 409 | dc.l 0 410 | dc.w $3E 411 | dc.w $47 412 | dc.w $4B 413 | dc.w $50 414 | dc.w $55 415 | dc.w $5A 416 | dc.w $5F 417 | dc.w $65 418 | dc.w $6B 419 | dc.w $71 420 | dc.w $78 421 | dc.w $7F 422 | dc.w $87 423 | dc.w $8F 424 | dc.w $97 425 | dc.w $A0 426 | dc.w $AA 427 | dc.w $B4 428 | dc.w $BE 429 | dc.w $CA 430 | dc.w $D6 431 | dc.w $E2 432 | dc.w $F0 433 | dc.w $FE 434 | dc.w $10D 435 | dc.w $11D 436 | dc.w $12E 437 | dc.w $140 438 | dc.w $153 439 | dc.w $168 440 | dc.w $17D 441 | dc.w $194 442 | dc.w $1AC 443 | dc.w $1C5 444 | dc.w $1E0 445 | dc.w $1FC 446 | dc.w $21A 447 | dc.w $23A 448 | dc.w $25C 449 | dc.w $280 450 | dc.w $2A6 451 | dc.w $2D0 452 | dc.w $2FA 453 | dc.w $328 454 | dc.w $358 455 | dc.w $38A 456 | dc.w $3C0 457 | dc.w $3F8 458 | dc.w $434 459 | dc.w $474 460 | dc.w $4B8 461 | dc.w $500 462 | dc.w $54C 463 | dc.w $5A0 464 | dc.w $5F4 465 | dc.w $650 466 | dc.w $6B0 467 | dc.w $714 468 | dc.w $780 469 | dc.w $7F0 470 | dc.w $868 471 | dc.w $8E8 472 | dc.w $970 473 | dc.w $A00 474 | dc.w $A98 475 | dc.w $B40 476 | dc.w $BE8 477 | dc.w $CA0 478 | dc.w $D60 479 | dc.w $E28 480 | dc.w $F00 481 | dc.w $FE0 482 | dc.l lbB000950 483 | dc.l $40003 484 | dc.l lbB000934 485 | dc.w 2 486 | dc.w 1 487 | dc.w $1F40 488 | dc.l lbB000966 489 | dc.w 6 490 | dc.w 5 491 | dc.l lbB0009C4 492 | dc.w 0 493 | dc.w 0 494 | dc.l lbB000938 495 | dc.w 1 496 | dc.w 0 497 | dc.l lbB000934 498 | dc.w 2 499 | dc.w 1 500 | dc.w $1F40 501 | dc.l lbB000960 502 | dc.w 3 503 | dc.w 2 504 | dc.l lbB000984 505 | dc.w 0 506 | dc.w 0 507 | dc.l lbB000938 508 | dc.w 1 509 | dc.w 0 510 | dc.l lbB000934 511 | dc.w 2 512 | dc.w 1 513 | dc.w $1F40 514 | dc.l lbB000954 515 | dc.w 3 516 | dc.w 2 517 | dc.l lbB000984 518 | dc.w 0 519 | dc.w 0 520 | dc.l lbB00094A 521 | dc.w 6 522 | dc.w 5 523 | dc.l lbB000934 524 | dc.w 3 525 | dc.w 2 526 | dc.w $1F40 527 | dc.l lbB000958 528 | dc.w 9 529 | dc.w 8 530 | dc.l lbB0009C4 531 | dc.w 0 532 | dc.w 0 533 | dc.l lbB000938 534 | dc.w 6 535 | dc.w 5 536 | dc.l lbB000934 537 | dc.w 3 538 | dc.w 2 539 | dc.w $1F40 540 | dc.l lbB000954 541 | dc.w 3 542 | dc.w 2 543 | dc.l lbB000984 544 | dc.l lbW000A04 545 | dc.l lbB000944 546 | dc.w 6 547 | dc.w 5 548 | dc.l lbB000934 549 | dc.w 3 550 | dc.w 2 551 | dc.w $1F40 552 | dc.l lbB000954 553 | dc.w 3 554 | dc.w 2 555 | dc.l lbB0009C4 556 | dc.w 0 557 | dc.w 0 558 | dc.l lbB000950 559 | dc.w 4 560 | dc.w 3 561 | dc.l lbB000934 562 | dc.w 2 563 | dc.w 1 564 | dc.w $1F40 565 | dc.l lbB00096C 566 | dc.w 6 567 | dc.w 5 568 | dc.l lbW000A04 569 | dc.w 0 570 | dc.w 0 571 | dc.l lbB000950 572 | dc.w 4 573 | dc.w 3 574 | dc.l lbB000934 575 | dc.w 2 576 | dc.w 1 577 | dc.w $1F40 578 | dc.l lbB000972 579 | dc.w 6 580 | dc.w 5 581 | dc.l lbW000A04 582 | dc.w 0 583 | dc.w 0 584 | dc.l lbB000950 585 | dc.w 4 586 | dc.w 3 587 | dc.l lbB000934 588 | dc.w 2 589 | dc.w 1 590 | dc.w $1F40 591 | dc.l lbB000978 592 | dc.w 6 593 | dc.w 5 594 | dc.l lbW000A04 595 | dc.w 0 596 | dc.w 0 597 | dc.l lbB000950 598 | dc.w 4 599 | dc.w 3 600 | dc.l lbB000934 601 | dc.w 2 602 | dc.w 1 603 | dc.w $1F40 604 | dc.l lbB00097E 605 | dc.w 6 606 | dc.w 5 607 | dc.l lbW000A04 608 | dc.w 0 609 | dc.w 0 610 | dc.w 0 611 | dc.w 0 612 | dc.l lbW000AA6 613 | dc.l lbW000ACA 614 | dc.l lbW000B28 615 | dc.l lbW000CB6 616 | dc.w $303 617 | dc.w $303 618 | dc.l lbW000AA6 619 | dc.l lbW000AE8 620 | dc.l lbW000B3C 621 | dc.l lbW000CCA 622 | dc.w $303 623 | dc.w $303 624 | dc.l lbW000AA6 625 | dc.l lbW000B06 626 | dc.l lbL000A96 627 | dc.l lbL000A96 628 | dc.w $303 629 | dc.w $303 630 | dc.l lbW000DA4 631 | dc.l lbL000A96 632 | dc.l lbW000B5A 633 | dc.l lbW000CE6 634 | dc.w $303 635 | dc.w $303 636 | dc.l lbW000AA6 637 | dc.l lbW000ACA 638 | dc.l lbL000A96 639 | dc.l lbL000A96 640 | dc.w $303 641 | dc.w $303 642 | dc.l lbW000AA6 643 | dc.l lbW000AE8 644 | dc.l lbW000C4E 645 | dc.l lbW000D6E 646 | dc.w $303 647 | dc.w $303 648 | dc.l lbW000AA6 649 | dc.l lbW000B06 650 | dc.l lbW000C68 651 | dc.l lbW000D88 652 | dc.w $303 653 | dc.w $303 654 | dc.l lbW000DA4 655 | dc.l lbL000A96 656 | dc.l lbL000A96 657 | dc.l lbL000A96 658 | dc.w $303 659 | dc.w $303 660 | dc.l lbW000AA6 661 | dc.l lbW000B78 662 | dc.l lbW000BDC 663 | dc.l lbW000D02 664 | dc.w $FC03 665 | dc.w $F7F7 666 | dc.l lbW000AA6 667 | dc.l lbW000B96 668 | dc.l lbW000BFA 669 | dc.l lbW000D1E 670 | dc.w $FF03 671 | dc.w $F7F7 672 | dc.l lbW000AA6 673 | dc.l lbW000BB8 674 | dc.l lbW000BDC 675 | dc.l lbW000D02 676 | dc.w $103 677 | dc.w $F7F7 678 | dc.l lbW000DA4 679 | dc.l lbL000A96 680 | dc.l lbW000BFA 681 | dc.l lbW000D1E 682 | dc.w $303 683 | dc.w $F7F7 684 | dc.l lbW000AA6 685 | dc.l lbW000B78 686 | dc.l lbW000BDC 687 | dc.l lbW000D02 688 | dc.l $FC030303 689 | dc.l lbW000AA6 690 | dc.l lbW000B96 691 | dc.l lbW000BFA 692 | dc.l lbW000D1E 693 | dc.l $FF030303 694 | dc.l lbW000AA6 695 | dc.l lbW000BB8 696 | dc.l lbW000C1A 697 | dc.l lbW000D3C 698 | dc.l $1030303 699 | dc.l lbW000DA4 700 | dc.l lbL000A96 701 | dc.l lbL000C3C 702 | dc.l lbL000D5C 703 | dc.l $3030303 704 | dc.l lbW000AA6 705 | dc.l lbW000DCA 706 | dc.l lbW000E3E 707 | dc.l lbW000EB2 708 | dc.l $8030303 709 | dc.l lbW000AA6 710 | dc.l lbW000DE8 711 | dc.l lbW000E5C 712 | dc.l lbW000ECE 713 | dc.l $8030303 714 | dc.l lbW000AA6 715 | dc.l lbW000E04 716 | dc.l lbW000E7A 717 | dc.l lbW000EEC 718 | dc.l $8030303 719 | dc.l lbW000DA4 720 | dc.l lbW000E22 721 | dc.l lbW000E98 722 | dc.l lbW000F0A 723 | dc.l $8030303 724 | dc.l lbW000AA6 725 | dc.l lbW000DCA 726 | dc.l lbW000E3E 727 | dc.l lbW000EB2 728 | dc.l $8030303 729 | dc.l lbW000AA6 730 | dc.l lbW000DE8 731 | dc.l lbW000E5C 732 | dc.l lbW000ECE 733 | dc.l $8030303 734 | dc.l lbW000AA6 735 | dc.l lbW000E04 736 | dc.l lbW000E7A 737 | dc.l lbW000EEC 738 | dc.l $8030303 739 | dc.l lbW000DA4 740 | dc.l lbW000E22 741 | dc.l lbW000F26 742 | dc.l lbW000F44 743 | dc.l $8030303 744 | dc.l lbW000AA6 745 | dc.l lbW000F60 746 | dc.l lbW000F9A 747 | dc.l lbW001004 748 | dc.l $A030303 749 | dc.l lbW000AA6 750 | dc.l lbW000F86 751 | dc.l lbW000FB4 752 | dc.l lbW00101E 753 | dc.l $A030303 754 | dc.l lbW000AA6 755 | dc.l lbW000F60 756 | dc.l lbW000FCE 757 | dc.l lbW001038 758 | dc.l $A030303 759 | dc.l lbW000DA4 760 | dc.l lbW000F86 761 | dc.l lbW000FEA 762 | dc.l lbW001054 763 | dc.l $A030303 764 | dc.l lbW000AA6 765 | dc.l lbW000DCA 766 | dc.l lbW000E3E 767 | dc.l lbW000EB2 768 | dc.l $8030303 769 | dc.l lbW000AA6 770 | dc.l lbW000DE8 771 | dc.l lbW000E5C 772 | dc.l lbW000ECE 773 | dc.l $8030303 774 | dc.l lbW000AA6 775 | dc.l lbW000E04 776 | dc.l lbW000E7A 777 | dc.l lbW000EEC 778 | dc.l $8030303 779 | dc.l lbW000DA4 780 | dc.l lbW000E22 781 | dc.l lbW000E98 782 | dc.l lbW000F0A 783 | dc.l $8030303 784 | dc.l 0 785 | lbB000934: 786 | dc.b 10 787 | dc.b 10 788 | dc.b $1E 789 | dc.b 0 790 | lbB000938: 791 | dc.b $40 792 | dc.b $36 793 | dc.b $2C 794 | dc.b $22 795 | dc.b $18 796 | dc.b 14 797 | dc.b $40 798 | dc.b $1C 799 | dc.b $36 800 | dc.b $32 801 | dc.b $2F 802 | dc.b $2C 803 | lbB000944: 804 | dc.b $3C 805 | dc.b $32 806 | dc.b $28 807 | dc.b $1E 808 | dc.b $14 809 | dc.b 10 810 | lbB00094A: 811 | dc.b $2C 812 | dc.b $1C 813 | dc.b $22 814 | dc.b $14 815 | dc.b $14 816 | dc.b $14 817 | lbB000950: 818 | dc.b $40 819 | dc.b $32 820 | dc.b $28 821 | dc.b $40 822 | lbB000954: 823 | dc.b $32 824 | dc.b 10 825 | dc.b 5 826 | dc.b 0 827 | lbB000958: 828 | dc.b 0 829 | dc.b 1 830 | dc.b 2 831 | dc.b 4 832 | dc.b 8 833 | dc.b $10 834 | dc.b $20 835 | dc.b $40 836 | lbB000960: 837 | dc.b 0 838 | dc.b $14 839 | dc.b $28 840 | dc.b $32 841 | dc.b $46 842 | dc.b $50 843 | lbB000966: 844 | dc.b 0 845 | dc.b 10 846 | dc.b $14 847 | dc.b $1E 848 | dc.b $23 849 | dc.b $28 850 | lbB00096C: 851 | dc.b 0 852 | dc.b 15 853 | dc.b $19 854 | dc.b $23 855 | dc.b $28 856 | dc.b $2D 857 | lbB000972: 858 | dc.b $14 859 | dc.b $1E 860 | dc.b $28 861 | dc.b $2D 862 | dc.b $32 863 | dc.b $3C 864 | lbB000978: 865 | dc.b $19 866 | dc.b $23 867 | dc.b $2D 868 | dc.b $32 869 | dc.b $37 870 | dc.b $5A 871 | lbB00097E: 872 | dc.b $1E 873 | dc.b $28 874 | dc.b $32 875 | dc.b $37 876 | dc.b $3C 877 | dc.b $78 878 | lbB000984: 879 | dc.b $78 880 | dc.b $6E 881 | dc.b $64 882 | dc.b $5A 883 | dc.b $50 884 | dc.b $46 885 | dc.b $3C 886 | dc.b $32 887 | dc.b $28 888 | dc.b $1E 889 | dc.b $14 890 | dc.b 10 891 | dc.b 0 892 | dc.b $78 893 | dc.b $6E 894 | dc.b $64 895 | dc.b $5A 896 | dc.b $50 897 | dc.b $46 898 | dc.b $3C 899 | dc.b $32 900 | dc.b $28 901 | dc.b $1E 902 | dc.b $14 903 | dc.b 10 904 | dc.b 0 905 | dc.b 0 906 | dc.b 0 907 | dc.b 0 908 | dc.b 0 909 | dc.b 0 910 | dc.b 0 911 | dc.b 0 912 | dc.b $7D 913 | dc.b $7E 914 | dc.b $7F 915 | dc.b $7F 916 | dc.b $7F 917 | dc.b $7F 918 | dc.b $7F 919 | dc.b $7F 920 | dc.b $7F 921 | dc.b $7F 922 | dc.b $7F 923 | dc.b $7F 924 | dc.b $7E 925 | dc.b $7D 926 | dc.b 0 927 | dc.b 0 928 | dc.b $7D 929 | dc.b $7E 930 | dc.b $7F 931 | dc.b $7F 932 | dc.b $7F 933 | dc.b $7F 934 | dc.b $7F 935 | dc.b $7F 936 | dc.b $7F 937 | dc.b $7F 938 | dc.b $7F 939 | dc.b $7F 940 | dc.b $7E 941 | dc.b $7D 942 | dc.b 0 943 | lbB0009C4: 944 | dc.b 1 945 | dc.b 2 946 | dc.b 4 947 | dc.b 8 948 | dc.b $10 949 | dc.b $20 950 | dc.b $40 951 | dc.b $7F 952 | dc.b $40 953 | dc.b $20 954 | dc.b $10 955 | dc.b 8 956 | dc.b 4 957 | dc.b 2 958 | dc.b 1 959 | dc.b $B0 960 | dc.b $FF 961 | dc.b $FE 962 | dc.b $FC 963 | dc.b $F8 964 | dc.b $F0 965 | dc.b $E0 966 | dc.b $C0 967 | dc.b $81 968 | dc.b $C0 969 | dc.b $E0 970 | dc.b $F0 971 | dc.b $F8 972 | dc.b $FC 973 | dc.b $FE 974 | dc.b $FF 975 | dc.b 0 976 | dc.b 1 977 | dc.b 2 978 | dc.b 4 979 | dc.b 8 980 | dc.b $10 981 | dc.b $20 982 | dc.b $40 983 | dc.b $7F 984 | dc.b $40 985 | dc.b $20 986 | dc.b $10 987 | dc.b 8 988 | dc.b 4 989 | dc.b 2 990 | dc.b 1 991 | dc.b 0 992 | dc.b 1 993 | dc.b 2 994 | dc.b 4 995 | dc.b 8 996 | dc.b $10 997 | dc.b $20 998 | dc.b $40 999 | dc.b $7F 1000 | dc.b $40 1001 | dc.b $20 1002 | dc.b $10 1003 | dc.b 8 1004 | dc.b 4 1005 | dc.b 2 1006 | dc.b 1 1007 | dc.b 0 1008 | lbW000A04: 1009 | dc.w $49 1010 | dc.w $4824 1011 | dc.w $440C 1012 | dc.w $1B0B 1013 | dc.w $36FB 1014 | dc.w $FADC 1015 | dc.w $6DA 1016 | dc.w $F4EE 1017 | dc.w $20E8 1018 | dc.w $E8C7 1019 | dc.w $EDBE 1020 | dc.w $D7D2 1021 | dc.w $9DA 1022 | dc.w $E7D4 1023 | dc.w $9E7 1024 | dc.w $90A 1025 | dc.w 0 1026 | dc.w 0 1027 | dc.w 0 1028 | dc.w 0 1029 | dc.w 0 1030 | dc.w $303 1031 | dc.w $707 1032 | dc.w $303 1033 | dc.w $FEFE 1034 | dc.w $202 1035 | dc.w $505 1036 | dc.w $202 1037 | dc.w 0 1038 | dc.w $303 1039 | dc.w $808 1040 | dc.w $303 1041 | dc.w 0 1042 | dc.w $505 1043 | dc.w $707 1044 | dc.w $505 1045 | dc.w 0 1046 | dc.w $202 1047 | dc.w $707 1048 | dc.w $202 1049 | dc.w $FDFD 1050 | dc.w 0 1051 | dc.w $505 1052 | dc.w 0 1053 | dc.w $FBFB 1054 | dc.w 0 1055 | dc.w $404 1056 | dc.w 0 1057 | dc.w 0 1058 | dc.w $505 1059 | dc.w $A0A 1060 | dc.w $505 1061 | dc.w 0 1062 | dc.w $303 1063 | dc.w $808 1064 | dc.w $303 1065 | dc.w 0 1066 | dc.w $303 1067 | dc.w $707 1068 | dc.w $303 1069 | dc.w $FEFE 1070 | dc.w $202 1071 | dc.w $505 1072 | dc.w $202 1073 | dc.w $9AFE 1074 | dc.w 0 1075 | dc.w 0 1076 | dc.w 0 1077 | dc.w 0 1078 | dc.w 0 1079 | dc.w 0 1080 | dc.w 0 1081 | dc.w 0 1082 | lbL000A96: 1083 | dc.l 0 1084 | dc.l 0 1085 | dc.l 0 1086 | dc.l 0 1087 | lbW000AA6: 1088 | dc.w $C440 1089 | dc.w $9940 1090 | dc.w $9805 1091 | dc.w 0 1092 | dc.w $C446 1093 | dc.w 0 1094 | dc.w $C447 1095 | dc.w 0 1096 | dc.w $C448 1097 | dc.w 0 1098 | dc.w $C449 1099 | dc.w 0 1100 | dc.w $C448 1101 | dc.w 0 1102 | dc.w $C447 1103 | dc.w 0 1104 | dc.w $C446 1105 | dc.w 0 1106 | lbW000ACA: 1107 | dc.w $E841 1108 | dc.w $9940 1109 | dc.w $9C01 1110 | dc.w 0 1111 | dc.w 0 1112 | dc.w 0 1113 | dc.w $E841 1114 | dc.w $9C01 1115 | dc.w 0 1116 | dc.w 0 1117 | dc.w 0 1118 | dc.w $E841 1119 | dc.w $9C02 1120 | dc.w 0 1121 | dc.w 0 1122 | lbW000AE8: 1123 | dc.w $E841 1124 | dc.w $9940 1125 | dc.w $9C01 1126 | dc.w 0 1127 | dc.w 0 1128 | dc.w 0 1129 | dc.w $E841 1130 | dc.w $9C01 1131 | dc.w 0 1132 | dc.w 0 1133 | dc.w 0 1134 | dc.w $E841 1135 | dc.w $9C03 1136 | dc.w 0 1137 | dc.w 0 1138 | lbW000B06: 1139 | dc.w $E841 1140 | dc.w $9940 1141 | dc.w $9C01 1142 | dc.w 0 1143 | dc.w 0 1144 | dc.w 0 1145 | dc.w $E841 1146 | dc.w $9C01 1147 | dc.w 0 1148 | dc.w 0 1149 | dc.w 0 1150 | dc.w $E841 1151 | dc.w $9C01 1152 | dc.w 0 1153 | dc.w $E842 1154 | dc.w $9C02 1155 | dc.w 0 1156 | lbW000B28: 1157 | dc.w $E843 1158 | dc.w $9940 1159 | dc.w 0 1160 | dc.w 0 1161 | dc.w 0 1162 | dc.w 0 1163 | dc.w 0 1164 | dc.w 0 1165 | dc.w 0 1166 | dc.w 0 1167 | lbW000B3C: 1168 | dc.w 0 1169 | dc.w $E843 1170 | dc.w $9940 1171 | dc.w 0 1172 | dc.w $EA43 1173 | dc.w 0 1174 | dc.w $EB43 1175 | dc.w 0 1176 | dc.w $ED43 1177 | dc.w 0 1178 | dc.w $E643 1179 | dc.w 0 1180 | dc.w 0 1181 | dc.w $E843 1182 | dc.w 0 1183 | lbW000B5A: 1184 | dc.w 0 1185 | dc.w $E843 1186 | dc.w $9940 1187 | dc.w 0 1188 | dc.w $EA43 1189 | dc.w 0 1190 | dc.w $EB43 1191 | dc.w 0 1192 | dc.w $ED43 1193 | dc.w 0 1194 | dc.w $E643 1195 | dc.w 0 1196 | dc.w 0 1197 | dc.w $E343 1198 | dc.w 0 1199 | lbW000B78: 1200 | dc.w $E842 1201 | dc.w $9940 1202 | dc.w $9C04 1203 | dc.w 0 1204 | dc.w 0 1205 | dc.w 0 1206 | dc.w $E841 1207 | dc.w $9C05 1208 | dc.w 0 1209 | dc.w 0 1210 | dc.w 0 1211 | dc.w $E841 1212 | dc.w $9C01 1213 | dc.w 0 1214 | dc.w 0 1215 | lbW000B96: 1216 | dc.w $E842 1217 | dc.w $9940 1218 | dc.w $9C04 1219 | dc.w 0 1220 | dc.w 0 1221 | dc.w 0 1222 | dc.w $E841 1223 | dc.w $9C05 1224 | dc.w 0 1225 | dc.w 0 1226 | dc.w 0 1227 | dc.w $E841 1228 | dc.w $9C01 1229 | dc.w 0 1230 | dc.w $E841 1231 | dc.w $9C01 1232 | dc.w 0 1233 | lbW000BB8: 1234 | dc.w $E842 1235 | dc.w $9C01 1236 | dc.w 0 1237 | dc.w 0 1238 | dc.w $E841 1239 | dc.w $9C01 1240 | dc.w 0 1241 | dc.w 0 1242 | dc.w $E841 1243 | dc.w $9C05 1244 | dc.w 0 1245 | dc.w 0 1246 | dc.w $E841 1247 | dc.w $9C02 1248 | dc.w 0 1249 | dc.w $E842 1250 | dc.w $9C01 1251 | dc.w 0 1252 | lbW000BDC: 1253 | dc.w 0 1254 | dc.w $E843 1255 | dc.w $9940 1256 | dc.w 0 1257 | dc.w $EA43 1258 | dc.w 0 1259 | dc.w $E843 1260 | dc.w 0 1261 | dc.w $F043 1262 | dc.w 0 1263 | dc.w $EF43 1264 | dc.w 0 1265 | dc.w 0 1266 | dc.w $E843 1267 | dc.w 0 1268 | lbW000BFA: 1269 | dc.w 0 1270 | dc.w $E843 1271 | dc.w $9940 1272 | dc.w 0 1273 | dc.w $EA43 1274 | dc.w 0 1275 | dc.w $E843 1276 | dc.w 0 1277 | dc.w $F043 1278 | dc.w 0 1279 | dc.w $EF43 1280 | dc.w 0 1281 | dc.w $EB43 1282 | dc.w 0 1283 | dc.w $E843 1284 | dc.w 0 1285 | lbW000C1A: 1286 | dc.w 0 1287 | dc.w $E843 1288 | dc.w $9940 1289 | dc.w 0 1290 | dc.w $EA43 1291 | dc.w 0 1292 | dc.w $E843 1293 | dc.w 0 1294 | dc.w $F043 1295 | dc.w 0 1296 | dc.w $EF43 1297 | dc.w 0 1298 | dc.w $EB43 1299 | dc.w 0 1300 | dc.w $E843 1301 | dc.w $9C01 1302 | dc.w 0 1303 | lbL000C3C: 1304 | dc.l 0 1305 | dc.l 0 1306 | dc.l $9B140000 1307 | dc.l 0 1308 | dc.w 0 1309 | lbW000C4E: 1310 | dc.w 0 1311 | dc.w $E343 1312 | dc.w 0 1313 | dc.w $E643 1314 | dc.w 0 1315 | dc.w $E343 1316 | dc.w 0 1317 | dc.w 0 1318 | dc.w $E843 1319 | dc.w 0 1320 | dc.w 0 1321 | dc.w $E343 1322 | dc.w 0 1323 | lbW000C68: 1324 | dc.w $E643 1325 | dc.w 0 1326 | dc.w $E343 1327 | dc.w 0 1328 | dc.w 0 1329 | dc.w 0 1330 | dc.w $E843 1331 | dc.w 0 1332 | dc.w $EB43 1333 | dc.w 0 1334 | dc.w $EA43 1335 | dc.w 0 1336 | dc.w $E843 1337 | dc.w 0 1338 | dc.w $F043 1339 | dc.w $9900 1340 | dc.w $E8 1341 | dc.w $4300 1342 | dc.w $EF43 1343 | dc.w $E8 1344 | dc.w $4300 1345 | dc.w $F043 1346 | dc.w $E8 1347 | dc.w $4300 1348 | dc.w $EF43 1349 | dc.w $E8 1350 | dc.w $4300 1351 | dc.w $F043 1352 | dc.w $E8 1353 | dc.w $4300 1354 | dc.w $EF43 1355 | dc.w $E8 1356 | dc.w $4300 1357 | dc.w $F043 1358 | dc.w $E8 1359 | dc.w $4300 1360 | dc.w $EF43 1361 | dc.w $E8 1362 | dc.w $4300 1363 | lbW000CB6: 1364 | dc.w $E8 1365 | dc.w $4599 1366 | dc.w $4000 1367 | dc.w 0 1368 | dc.w 0 1369 | dc.w 0 1370 | dc.w 0 1371 | dc.w 0 1372 | dc.w 0 1373 | dc.w 0 1374 | lbW000CCA: 1375 | dc.w 0 1376 | dc.w $E8 1377 | dc.w $4500 1378 | dc.w $EA 1379 | dc.w $4500 1380 | dc.w $EB 1381 | dc.w $4500 1382 | dc.w $ED 1383 | dc.w $4500 1384 | dc.w $E6 1385 | dc.w $4500 1386 | dc.w 0 1387 | dc.w $E8 1388 | dc.w $4500 1389 | lbW000CE6: 1390 | dc.w 0 1391 | dc.w $E8 1392 | dc.w $4500 1393 | dc.w $EA 1394 | dc.w $4500 1395 | dc.w $EB 1396 | dc.w $4500 1397 | dc.w $ED 1398 | dc.w $4500 1399 | dc.w $E6 1400 | dc.w $4500 1401 | dc.w 0 1402 | dc.w $E3 1403 | dc.w $4500 1404 | lbW000D02: 1405 | dc.w 0 1406 | dc.w $E8 1407 | dc.w $4500 1408 | dc.w $EA 1409 | dc.w $4500 1410 | dc.w $E8 1411 | dc.w $4500 1412 | dc.w $F0 1413 | dc.w $4500 1414 | dc.w $EF 1415 | dc.w $4500 1416 | dc.w 0 1417 | dc.w $E8 1418 | dc.w $4500 1419 | lbW000D1E: 1420 | dc.w 0 1421 | dc.w $E8 1422 | dc.w $4500 1423 | dc.w $EA 1424 | dc.w $4500 1425 | dc.w $E8 1426 | dc.w $4500 1427 | dc.w $F0 1428 | dc.w $4500 1429 | dc.w $EF 1430 | dc.w $4500 1431 | dc.w $EB 1432 | dc.w $4500 1433 | dc.w $E8 1434 | dc.w $4500 1435 | lbW000D3C: 1436 | dc.w 0 1437 | dc.w $E8 1438 | dc.w $4500 1439 | dc.w $EA 1440 | dc.w $4500 1441 | dc.w $E8 1442 | dc.w $4500 1443 | dc.w $F0 1444 | dc.w $4500 1445 | dc.w $EF 1446 | dc.w $4500 1447 | dc.w $EB 1448 | dc.w $4500 1449 | dc.w $E8 1450 | dc.w $459C 1451 | dc.w $100 1452 | lbL000D5C: 1453 | dc.l 0 1454 | dc.l 0 1455 | dc.l $9B3C00 1456 | dc.l 0 1457 | dc.w 0 1458 | lbW000D6E: 1459 | dc.w 0 1460 | dc.w $E3 1461 | dc.w $4500 1462 | dc.w $E6 1463 | dc.w $4500 1464 | dc.w $E3 1465 | dc.w $4500 1466 | dc.w 0 1467 | dc.w $E8 1468 | dc.w $4500 1469 | dc.w 0 1470 | dc.w $E3 1471 | dc.w $4500 1472 | lbW000D88: 1473 | dc.w $E6 1474 | dc.w $4500 1475 | dc.w $E3 1476 | dc.w $4500 1477 | dc.w 0 1478 | dc.w 0 1479 | dc.w $E8 1480 | dc.w $4500 1481 | dc.w $EB 1482 | dc.w $4500 1483 | dc.w $EA 1484 | dc.w $4500 1485 | dc.w $E8 1486 | dc.w $4500 1487 | lbW000DA4: 1488 | dc.w $C440 1489 | dc.w $9940 1490 | dc.w $9805 1491 | dc.w 0 1492 | dc.w $C446 1493 | dc.w 0 1494 | dc.w $C447 1495 | dc.w 0 1496 | dc.w $C448 1497 | dc.w 0 1498 | dc.w $C449 1499 | dc.w 0 1500 | dc.w $C448 1501 | dc.w 0 1502 | dc.w $C447 1503 | dc.w 0 1504 | dc.w $C446 1505 | dc.w $C4 1506 | dc.w $4600 1507 | lbW000DCA: 1508 | dc.w $E141 1509 | dc.w $9940 1510 | dc.w $9C03 1511 | dc.w 0 1512 | dc.w 0 1513 | dc.w $E141 1514 | dc.w $9C03 1515 | dc.w 0 1516 | dc.w 0 1517 | dc.w $E141 1518 | dc.w $9C01 1519 | dc.w 0 1520 | dc.w 0 1521 | dc.w 0 1522 | dc.w 0 1523 | lbW000DE8: 1524 | dc.w $E141 1525 | dc.w $9C03 1526 | dc.w 0 1527 | dc.w $E141 1528 | dc.w $9C03 1529 | dc.w 0 1530 | dc.w 0 1531 | dc.w $E141 1532 | dc.w $9C01 1533 | dc.w 0 1534 | dc.w 0 1535 | dc.w 0 1536 | dc.w 0 1537 | dc.w 0 1538 | lbW000E04: 1539 | dc.w $E141 1540 | dc.w $9940 1541 | dc.w $9C02 1542 | dc.w 0 1543 | dc.w 0 1544 | dc.w $E141 1545 | dc.w $9C02 1546 | dc.w 0 1547 | dc.w 0 1548 | dc.w 0 1549 | dc.w 0 1550 | dc.w $E141 1551 | dc.w $9C02 1552 | dc.w 0 1553 | dc.w 0 1554 | lbW000E22: 1555 | dc.w $E141 1556 | dc.w $9C06 1557 | dc.w 0 1558 | dc.w $E141 1559 | dc.w $9C06 1560 | dc.w 0 1561 | dc.w 0 1562 | dc.w $E141 1563 | dc.w $9C07 1564 | dc.w 0 1565 | dc.w 0 1566 | dc.w 0 1567 | dc.w 0 1568 | dc.w 0 1569 | lbW000E3E: 1570 | dc.w 0 1571 | dc.w $DF43 1572 | dc.w $9940 1573 | dc.w 0 1574 | dc.w $E143 1575 | dc.w 0 1576 | dc.w $DF43 1577 | dc.w 0 1578 | dc.w $E143 1579 | dc.w 0 1580 | dc.w $E4 1581 | dc.w $4300 1582 | dc.w 0 1583 | dc.w $E143 1584 | dc.w 0 1585 | lbW000E5C: 1586 | dc.w 0 1587 | dc.w $DF43 1588 | dc.w $9940 1589 | dc.w 0 1590 | dc.w $E143 1591 | dc.w 0 1592 | dc.w $DF43 1593 | dc.w 0 1594 | dc.w $E143 1595 | dc.w 0 1596 | dc.w $E6 1597 | dc.w $4300 1598 | dc.w 0 1599 | dc.w $E143 1600 | dc.w 0 1601 | lbW000E7A: 1602 | dc.w 0 1603 | dc.w $DF43 1604 | dc.w $9940 1605 | dc.w 0 1606 | dc.w $E143 1607 | dc.w 0 1608 | dc.w $DF43 1609 | dc.w 0 1610 | dc.w $E143 1611 | dc.w 0 1612 | dc.w $E8 1613 | dc.w $4300 1614 | dc.w 0 1615 | dc.w $E143 1616 | dc.w 0 1617 | lbW000E98: 1618 | dc.w 0 1619 | dc.w $EB43 1620 | dc.w $9940 1621 | dc.w 0 1622 | dc.w 0 1623 | dc.w $E843 1624 | dc.w 0 1625 | dc.w 0 1626 | dc.w $EB43 1627 | dc.w 0 1628 | dc.w 0 1629 | dc.w $ED43 1630 | dc.w 0 1631 | lbW000EB2: 1632 | dc.w 0 1633 | dc.w $DF 1634 | dc.w $4399 1635 | dc.w $4000 1636 | dc.w $E1 1637 | dc.w $4300 1638 | dc.w $DF 1639 | dc.w $4300 1640 | dc.w $E1 1641 | dc.w $4300 1642 | dc.w 0 1643 | dc.w $E443 1644 | dc.w 0 1645 | dc.w $E1 1646 | lbW000ECE: 1647 | dc.w $E143 1648 | dc.w 0 1649 | dc.w $DF 1650 | dc.w $4399 1651 | dc.w $4000 1652 | dc.w $E1 1653 | dc.w $4300 1654 | dc.w $DF 1655 | dc.w $4300 1656 | dc.w $E1 1657 | dc.w $4300 1658 | dc.w 0 1659 | dc.w $E643 1660 | dc.w 0 1661 | dc.w $E1 1662 | lbW000EEC: 1663 | dc.w $E143 1664 | dc.w 0 1665 | dc.w $DF 1666 | dc.w $4399 1667 | dc.w $4000 1668 | dc.w $E1 1669 | dc.w $4300 1670 | dc.w $DF 1671 | dc.w $4300 1672 | dc.w $E1 1673 | dc.w $4300 1674 | dc.w 0 1675 | dc.w $E843 1676 | dc.w 0 1677 | dc.w $E1 1678 | lbW000F0A: 1679 | dc.w $E143 1680 | dc.w 0 1681 | dc.w $EB 1682 | dc.w $4399 1683 | dc.w $4000 1684 | dc.w 0 1685 | dc.w $E8 1686 | dc.w $4300 1687 | dc.w 0 1688 | dc.w $EB 1689 | dc.w $4300 1690 | dc.w 0 1691 | dc.w $ED 1692 | dc.w $4300 1693 | lbW000F26: 1694 | dc.w 0 1695 | dc.w $DF43 1696 | dc.w $9940 1697 | dc.w 0 1698 | dc.w $E143 1699 | dc.w 0 1700 | dc.w $DF43 1701 | dc.w 0 1702 | dc.w $ED43 1703 | dc.w 0 1704 | dc.w $EB 1705 | dc.w $4300 1706 | dc.w 0 1707 | dc.w $E843 1708 | dc.w 0 1709 | lbW000F44: 1710 | dc.w 0 1711 | dc.w $DF 1712 | dc.w $4399 1713 | dc.w $4000 1714 | dc.w $E1 1715 | dc.w $4300 1716 | dc.w $DF 1717 | dc.w $4300 1718 | dc.w $ED 1719 | dc.w $4300 1720 | dc.w 0 1721 | dc.w $EB43 1722 | dc.w 0 1723 | dc.w $E3 1724 | lbW000F60: 1725 | dc.w $E341 1726 | dc.w $9940 1727 | dc.w $9C08 1728 | dc.w 0 1729 | dc.w $E341 1730 | dc.w $9C08 1731 | dc.w 0 1732 | dc.w 0 1733 | dc.w $E342 1734 | dc.w $9C09 1735 | dc.w 0 1736 | dc.w 0 1737 | dc.w $E341 1738 | dc.w $9C0B 1739 | dc.w 0 1740 | dc.w 0 1741 | dc.w $E341 1742 | dc.w $9C0A 1743 | dc.w 0 1744 | lbW000F86: 1745 | dc.w $E342 1746 | dc.w $9C0A 1747 | dc.w 0 1748 | dc.w 0 1749 | dc.w 0 1750 | dc.w 0 1751 | dc.w 0 1752 | dc.w 0 1753 | dc.w 0 1754 | dc.w 0 1755 | lbW000F9A: 1756 | dc.w $E643 1757 | dc.w $9940 1758 | dc.w 0 1759 | dc.w 0 1760 | dc.w $E343 1761 | dc.w 0 1762 | dc.w 0 1763 | dc.w $E143 1764 | dc.w 0 1765 | dc.w $E343 1766 | dc.w 0 1767 | dc.w 0 1768 | dc.w 0 1769 | lbW000FB4: 1770 | dc.w $E843 1771 | dc.w $9940 1772 | dc.w 0 1773 | dc.w 0 1774 | dc.w $E343 1775 | dc.w 0 1776 | dc.w 0 1777 | dc.w $DE43 1778 | dc.w 0 1779 | dc.w $E343 1780 | dc.w 0 1781 | dc.w 0 1782 | dc.w 0 1783 | lbW000FCE: 1784 | dc.w $EA43 1785 | dc.w $9940 1786 | dc.w 0 1787 | dc.w 0 1788 | dc.w $E343 1789 | dc.w 0 1790 | dc.w 0 1791 | dc.w $E143 1792 | dc.w 0 1793 | dc.w $E343 1794 | dc.w 0 1795 | dc.w 0 1796 | dc.w $E343 1797 | dc.w 0 1798 | lbW000FEA: 1799 | dc.w $EA43 1800 | dc.w $9940 1801 | dc.w 0 1802 | dc.w $EB43 1803 | dc.w 0 1804 | dc.w $ED43 1805 | dc.w 0 1806 | dc.w $EA43 1807 | dc.w 0 1808 | dc.w 0 1809 | dc.w 0 1810 | dc.w 0 1811 | dc.w 0 1812 | lbW001004: 1813 | dc.w $E6 1814 | dc.w $4399 1815 | dc.w $4000 1816 | dc.w 0 1817 | dc.w $E3 1818 | dc.w $4300 1819 | dc.w 0 1820 | dc.w $E1 1821 | dc.w $4300 1822 | dc.w $E3 1823 | dc.w $4300 1824 | dc.w 0 1825 | dc.w 0 1826 | lbW00101E: 1827 | dc.w $E8 1828 | dc.w $4399 1829 | dc.w $4000 1830 | dc.w 0 1831 | dc.w $E3 1832 | dc.w $4300 1833 | dc.w 0 1834 | dc.w $DE 1835 | dc.w $4300 1836 | dc.w $E3 1837 | dc.w $4300 1838 | dc.w 0 1839 | dc.w 0 1840 | lbW001038: 1841 | dc.w $EA 1842 | dc.w $4399 1843 | dc.w $4000 1844 | dc.w 0 1845 | dc.w $E3 1846 | dc.w $4300 1847 | dc.w 0 1848 | dc.w $E1 1849 | dc.w $4300 1850 | dc.w $E3 1851 | dc.w $4300 1852 | dc.w 0 1853 | dc.w $E3 1854 | dc.w $4300 1855 | lbW001054: 1856 | dc.w $EA 1857 | dc.w $4399 1858 | dc.w $4000 1859 | dc.w $EB 1860 | dc.w $4300 1861 | dc.w $ED 1862 | dc.w $4300 1863 | dc.w $EA 1864 | dc.w $4300 1865 | dc.w 0 1866 | dc.w 0 1867 | dc.w 0 1868 | dc.w 0 1869 | lbL00106E: 1870 | dc.l 0 1871 | dc.l 0 1872 | dc.l 0 1873 | dc.l 3 1874 | dc.l $30000 1875 | dc.l 0 1876 | dc.l 0 1877 | dc.l 0 1878 | dc.l $A5E0000 1879 | dc.l 0 1880 | dc.l 0 1881 | dc.l 0 1882 | dc.l 0 1883 | dc.l 0 1884 | dc.l 0 1885 | dc.l 0 1886 | dc.l 0 1887 | dc.l 0 1888 | dc.l 0 1889 | dc.l 0 1890 | dc.l 0 1891 | dc.l 0 1892 | dc.l 0 1893 | dc.l 0 1894 | dc.l $2F4 1895 | dc.l $30000 1896 | dc.l 0 1897 | dc.l 0 1898 | dc.l 0 1899 | dc.l 3 1900 | dc.l $30000 1901 | dc.l 0 1902 | dc.l 0 1903 | dc.l 0 1904 | dc.l $A5E0000 1905 | dc.l 0 1906 | dc.l 0 1907 | dc.l 0 1908 | dc.l 0 1909 | dc.l 0 1910 | dc.l 0 1911 | dc.l 0 1912 | dc.l 0 1913 | dc.l 0 1914 | dc.l 0 1915 | dc.l 0 1916 | dc.l 0 1917 | dc.l 0 1918 | dc.l 0 1919 | dc.l 0 1920 | dc.l $2F4 1921 | dc.l $30000 1922 | dc.l 0 1923 | dc.l 0 1924 | dc.l 0 1925 | dc.l 3 1926 | dc.l $30000 1927 | dc.l 0 1928 | dc.l 0 1929 | dc.l 0 1930 | dc.l $A5E0000 1931 | dc.l 0 1932 | dc.l 0 1933 | dc.l 0 1934 | dc.l 0 1935 | dc.l 0 1936 | dc.l 0 1937 | dc.l 0 1938 | dc.l 0 1939 | dc.l 0 1940 | dc.l 0 1941 | dc.l 0 1942 | dc.l 0 1943 | dc.l 0 1944 | dc.l 0 1945 | dc.l 0 1946 | dc.l $2F4 1947 | dc.l $30000 1948 | dc.l 0 1949 | dc.l 0 1950 | dc.l 0 1951 | dc.l 3 1952 | dc.l $30000 1953 | dc.l 0 1954 | dc.l 0 1955 | dc.l 0 1956 | dc.l $A5E0000 1957 | dc.l 0 1958 | dc.l 0 1959 | dc.l 0 1960 | dc.l 0 1961 | dc.l 0 1962 | dc.l 0 1963 | dc.l 0 1964 | dc.l 0 1965 | dc.l 0 1966 | dc.l 0 1967 | dc.l 0 1968 | dc.l 0 1969 | dc.l 0 1970 | dc.l 0 1971 | dc.l 0 1972 | dc.l $2F4 1973 | dc.l $30000 1974 | dc.l 0 1975 | dc.l 0 1976 | dc.l 0 1977 | dc.l 0 1978 | -------------------------------------------------------------------------------- /Paranoimia-VectorLogo-original.S: -------------------------------------------------------------------------------- 1 | **************************************************** 2 | * 3 | * PARANOIMIA Vector Cracktro 4 | * 5 | * Code: Pwy (Electronic Artists, NO) 6 | * Music: TSM (Sunriders, DE) 7 | * 8 | * Disassembled by MnemoTroN/Spreadpoint in 2023 9 | * using ReSource 6.06. 10 | * 11 | * This source resembles the original code from 1990 12 | * without modifications to preserve the original. 13 | * 14 | * Load into ASM-One or Asm-Pro with "r" command, 15 | * assemble with "a" and run intro with "j main". 16 | * 17 | **************************************************** 18 | 19 | ; 3D starfield 20 | num_stars EQU 37 21 | stars_bpl1 EQU $60000 22 | stars_bpl2 EQU $63000 23 | starpostab EQU $66000 24 | starrestoretab EQU $67000 25 | 26 | ; scrolltext bitplane 27 | text_bpl EQU $68000 28 | 29 | ; 3D vector logo 30 | num_points EQU 37 31 | num_lines EQU 28 32 | vector_buffer EQU $68320 33 | vector_bpl EQU $68320+1200 34 | 35 | **************************************************************************** 36 | 37 | ; Original beginning of code. 38 | 39 | ; The music code is located at $50914. 40 | 41 | ; The intro's main entry point is $5334c (labeled 'main' here). 42 | ; This disassembly might not exactly match that address. 43 | 44 | org $50914 45 | 46 | music_tick: 47 | MOVEM.L D0-D7/A0-A6,-(SP) 48 | LEA musicdata(PC),A6 49 | TST.B $10(A6) 50 | BNE.S lbC000028 51 | BSR lbC0000D4 52 | BRA.S lbC00002C 53 | 54 | lbC000028: 55 | BSR lbC0001B6 56 | lbC00002C: 57 | ADDQ.B #1,$10(A6) 58 | MOVE.B $10(A6),D0 59 | CMP.B $12(A6),D0 60 | BNE.W lbC0000BA 61 | CLR.B $10(A6) 62 | ADDQ.B #1,$11(A6) 63 | CMPI.B #$10,$11(A6) 64 | BNE.S lbC0000A0 65 | CLR.B $11(A6) 66 | ADDQ.W #1,$14(A6) 67 | LEA $22E(A6),A1 68 | lbC000058: 69 | CLR.L D0 70 | MOVE.W $14(A6),D0 71 | MULU.W #$14,D0 72 | TST.L (A1,D0.W) 73 | BNE.S lbC00006E 74 | CLR.W $14(A6) 75 | BRA.S lbC000058 76 | 77 | lbC00006E: 78 | MOVE.L $16(A6),A0 79 | MOVE.L (A1,D0.W),(A0) 80 | MOVE.L 4(A1,D0.W),$68(A0) 81 | MOVE.L 8(A1,D0.W),$D0(A0) 82 | MOVE.L 12(A1,D0.W),$138(A0) 83 | MOVE.B $10(A1,D0.W),$66(A0) 84 | MOVE.B $11(A1,D0.W),$CE(A0) 85 | MOVE.B $12(A1,D0.W),$136(A0) 86 | MOVE.B $13(A1,D0.W),$19E(A0) 87 | lbC0000A0: 88 | MOVE.L $16(A6),A0 89 | MOVEQ #3,D7 90 | lbC0000A6: 91 | BSR lbC00037E 92 | BSR lbC0001F6 93 | ADDA.L #$68,A0 94 | DBRA D7,lbC0000A6 95 | BRA.S lbC0000CE 96 | 97 | lbC0000BA: 98 | MOVE.L $16(A6),A0 99 | MOVEQ #3,D7 100 | lbC0000C0: 101 | BSR lbC0001F6 102 | ADDA.L #$68,A0 103 | DBRA D7,lbC0000C0 104 | lbC0000CE: 105 | MOVEM.L (SP)+,D0-D7/A0-A6 106 | RTS 107 | 108 | lbC0000D4: 109 | MOVE.L $16(A6),A0 110 | CLR.W D6 111 | TST.W $1A(A0) 112 | BEQ.S lbC0000E4 113 | BSET #0,D6 114 | lbC0000E4: 115 | TST.W $82(A0) 116 | BEQ.S lbC0000EE 117 | BSET #1,D6 118 | lbC0000EE: 119 | TST.W $EA(A0) 120 | BEQ.S lbC0000F8 121 | BSET #2,D6 122 | lbC0000F8: 123 | TST.W $152(A0) 124 | BEQ.S lbC000102 125 | BSET #3,D6 126 | lbC000102: 127 | MOVE.W D6,$DFF096 128 | LEA $DFF0A0,A1 129 | MOVE.L $16(A6),A0 130 | MOVEQ #3,D7 131 | lbC000114: 132 | MOVE.B $15(A0),9(A1) 133 | MOVE.W $20(A0),6(A1) 134 | TST.W $1A(A0) 135 | BEQ.S lbC000130 136 | MOVE.L $16(A0),(A1) 137 | MOVE.W $1A(A0),4(A1) 138 | lbC000130: 139 | ADDA.L #$68,A0 140 | ADDA.L #$10,A1 141 | DBRA D7,lbC000114 142 | MOVE.L $16(A6),A0 143 | ADDA.L #$22,A0 144 | MOVEQ #7,D0 145 | lbC00014C: 146 | MOVE.L $158(A0),$138(A0) 147 | MOVE.L $F0(A0),$D0(A0) 148 | MOVE.L $88(A0),$68(A0) 149 | MOVE.L $20(A0),(A0)+ 150 | DBRA D0,lbC00014C 151 | MOVE.W #$100,D0 152 | lbC00016A: 153 | DBRA D0,lbC00016A 154 | ORI.W #$8000,D6 155 | MOVE.W D6,$DFF096 156 | MOVE.L $16(A6),A0 157 | LEA $DFF0A0,A1 158 | MOVEQ #3,D7 159 | lbC000184: 160 | TST.W $1A(A0) 161 | BEQ.S lbC0001A4 162 | CLR.L D1 163 | MOVE.W $1C(A0),D1 164 | LSL.L #1,D1 165 | MOVE.L $16(A0),A2 166 | ADDA.L D1,A2 167 | MOVE.L A2,(A1) 168 | MOVE.W $1E(A0),4(A1) 169 | CLR.W $1A(A0) 170 | lbC0001A4: 171 | ADDA.L #$68,A0 172 | ADDA.L #$10,A1 173 | DBRA D7,lbC000184 174 | RTS 175 | 176 | lbC0001B6: 177 | LEA $DFF0A0,A1 178 | MOVE.L $16(A6),A0 179 | MOVEQ #3,D7 180 | lbC0001C2: 181 | MOVE.B $15(A0),9(A1) 182 | MOVE.W $20(A0),6(A1) 183 | BTST #0,$14(A0) 184 | BEQ.S lbC0001E4 185 | LEA $22(A0),A2 186 | MOVEQ #7,D0 187 | lbC0001DC: 188 | MOVE.L $20(A2),(A2)+ 189 | DBRA D0,lbC0001DC 190 | lbC0001E4: 191 | ADDA.L #$68,A0 192 | ADDA.L #$10,A1 193 | DBRA D7,lbC0001C2 194 | RTS 195 | 196 | lbC0001F6: 197 | TST.B $14(A0) 198 | BMI lbC00037C 199 | MOVE.L 4(A0),A1 200 | MOVE.L (A1),A2 201 | MOVE.W $10(A0),D0 202 | CLR.W D1 203 | MOVE.B (A2,D0.W),D1 204 | MOVEQ #0,D2 205 | MOVE.B 12(A0),D2 206 | MULU.W D2,D1 207 | LSR.W #7,D1 208 | MOVE.B D1,$15(A0) 209 | LEA $46(A6),A2 210 | LEA $5A2(A6),A3 211 | CLR.L D5 212 | MOVE.B 14(A0),D5 213 | LSL.W #3,D5 214 | MOVEQ #0,D6 215 | MOVE.B 15(A0),D6 216 | ADD.W D6,D5 217 | MOVE.W 8(A0),D0 218 | MOVE.L 8(A1),A4 219 | MOVE.W $64(A0),D1 220 | CLR.W D2 221 | MOVE.B (A4,D1.W),D2 222 | MOVE.W $62(A0),D3 223 | BPL.S lbC00024E 224 | NEG.W D3 225 | lbC00024E: 226 | SUBI.W #$4000,D3 227 | MULS.W D2,D3 228 | LSR.L #6,D3 229 | LSR.L #6,D3 230 | ADD.W D3,D0 231 | MOVE.W D0,D1 232 | LSR.W #8,D1 233 | SUB.B (A3,D5.W),D1 234 | LSL.W #1,D1 235 | MOVE.W (A2,D1.W),D3 236 | ANDI.W #$FF,D0 237 | BEQ.S lbC000280 238 | MOVE.W 2(A2,D1.W),D4 239 | MOVE.W #$100,D2 240 | SUB.W D0,D2 241 | MULU.W D0,D4 242 | MULU.W D2,D3 243 | ADD.L D4,D3 244 | LSR.L #8,D3 245 | lbC000280: 246 | MOVE.W D3,$20(A0) 247 | BTST #0,$14(A0) 248 | BEQ.S lbC0002FA 249 | MOVE.W $12(A0),D0 250 | MOVE.L $12(A1),A2 251 | MOVEQ #0,D1 252 | MOVE.B (A2,D0.W),D1 253 | MOVE.W #$80,D0 254 | SUB.W D1,D0 255 | MOVE.W #$1F,D4 256 | LEA $42(A0),A2 257 | MOVE.L $1A(A1),A3 258 | TST.L $1E(A1) 259 | BEQ lbC0002D0 260 | MOVE.L $1E(A1),A4 261 | lbC0002B8: 262 | MOVE.B (A3)+,D2 263 | EXT.W D2 264 | MOVE.B (A4)+,D3 265 | EXT.W D3 266 | MULS.W D0,D2 267 | MULS.W D1,D3 268 | ADD.W D2,D3 269 | ASR.W #7,D3 270 | MOVE.B D3,(A2)+ 271 | DBRA D4,lbC0002B8 272 | BRA.S lbC0002FA 273 | 274 | lbC0002D0: 275 | BTST #1,$14(A0) 276 | BEQ lbC0002DC 277 | MOVE.L A2,A3 278 | lbC0002DC: 279 | BSET #1,$14(A0) 280 | MOVE.B $1F(A3),D3 281 | EXT.W D3 282 | lbC0002E8: 283 | MOVE.B (A3)+,D2 284 | EXT.W D2 285 | MULS.W D0,D2 286 | MULS.W D1,D3 287 | ADD.W D2,D3 288 | ASR.W #7,D3 289 | MOVE.B D3,(A2)+ 290 | DBRA D4,lbC0002E8 291 | lbC0002FA: 292 | MOVE.W 10(A0),D0 293 | ADD.W D0,8(A0) 294 | CLR.W D0 295 | CLR.W D1 296 | MOVE.B 13(A0),D0 297 | EXT.W D0 298 | MOVE.B 12(A0),D1 299 | ADD.W D0,D1 300 | BPL.S lbC000318 301 | CLR.B D1 302 | BRA.S lbC000322 303 | 304 | lbC000318: 305 | CMPI.W #$81,D1 306 | BMI.S lbC000322 307 | MOVE.W #$80,D1 308 | lbC000322: 309 | MOVE.B D1,12(A0) 310 | ADDQ.B #1,15(A0) 311 | ANDI.B #7,15(A0) 312 | ADDQ.W #1,$10(A0) 313 | MOVE.W $10(A0),D0 314 | CMP.W 4(A1),D0 315 | BNE.S lbC000344 316 | MOVE.W 6(A1),$10(A0) 317 | lbC000344: 318 | MOVE.W $10(A1),D0 319 | ADD.W D0,$62(A0) 320 | ADDQ.W #1,$64(A0) 321 | MOVE.W $64(A0),D0 322 | CMP.W 12(A1),D0 323 | BNE.S lbC000360 324 | MOVE.W 14(A1),$64(A0) 325 | lbC000360: 326 | BTST #0,$14(A0) 327 | BEQ.S lbC00037C 328 | ADDQ.W #1,$12(A0) 329 | MOVE.W $12(A0),D0 330 | CMP.W $16(A1),D0 331 | BNE.S lbC00037C 332 | MOVE.W $18(A1),$12(A0) 333 | lbC00037C: 334 | RTS 335 | 336 | lbC00037E: 337 | MOVE.L (A0),A1 338 | lbC000380: 339 | MOVE.B (A1)+,D0 340 | BEQ lbC00047E 341 | BPL.S lbC0003DE 342 | CMPI.B #$B8,D0 343 | BPL lbC000468 344 | CMPI.B #$9C,D0 345 | BNE.S lbC0003A0 346 | MOVE.B (A1)+,14(A0) 347 | CLR.B 15(A0) 348 | BRA.S lbC000380 349 | 350 | lbC0003A0: 351 | CMPI.B #$9B,D0 352 | BNE.S lbC0003B2 353 | CLR.W D0 354 | MOVE.B (A1)+,D0 355 | EXT.W D0 356 | MOVE.W D0,10(A0) 357 | BRA.S lbC000380 358 | 359 | lbC0003B2: 360 | CMPI.B #$9A,D0 361 | BNE.S lbC0003BE 362 | MOVE.B (A1)+,13(A0) 363 | BRA.S lbC000380 364 | 365 | lbC0003BE: 366 | CMPI.B #$99,D0 367 | BNE.S lbC0003D2 368 | MOVE.B (A1)+,D1 369 | LSL.B #1,D1 370 | MOVE.B D1,12(A0) 371 | CLR.B 13(A0) 372 | BRA.S lbC000380 373 | 374 | lbC0003D2: 375 | CMPI.B #$98,D0 376 | BNE.S lbC0003DC 377 | MOVE.B (A1)+,$12(A6) 378 | lbC0003DC: 379 | BRA.S lbC000380 380 | 381 | lbC0003DE: 382 | BTST #6,D0 383 | BEQ.S lbC00042A 384 | LEA $D6(A6),A2 385 | SUBI.B #$40,D0 386 | CLR.L D1 387 | MOVE.B D0,D1 388 | MULU.W #$22,D1 389 | LEA (A2,D1.W),A3 390 | MOVE.L A3,4(A0) 391 | CLR.L 14(A0) 392 | CLR.W $12(A0) 393 | CLR.L $62(A0) 394 | MOVE.B #1,$14(A0) 395 | LEA $22(A0),A4 396 | MOVE.L A4,$16(A0) 397 | MOVE.W #$10,$1A(A0) 398 | CLR.W $1C(A0) 399 | MOVE.W #$10,$1E(A0) 400 | BRA lbC000380 401 | 402 | lbC00042A: 403 | SUBQ.B #1,D0 404 | LEA $22A(A6),A2 405 | CLR.L D1 406 | MOVE.B D0,D1 407 | MULU.W #$1C,D1 408 | LEA (A2,D1.W),A3 409 | MOVE.L A3,4(A0) 410 | CLR.L 14(A0) 411 | CLR.B $14(A0) 412 | CLR.L $62(A0) 413 | MOVE.L $12(A3),$16(A0) 414 | MOVE.W $16(A3),$1A(A0) 415 | MOVE.W $18(A3),$1C(A0) 416 | MOVE.W $1A(A3),$1E(A0) 417 | BRA lbC000380 418 | 419 | lbC000468: 420 | NOT.B D0 421 | SUB.B $66(A0),D0 422 | MOVE.B D0,8(A0) 423 | CLR.B 9(A0) 424 | CLR.W 10(A0) 425 | BRA lbC000380 426 | 427 | lbC00047E: 428 | MOVE.L A1,(A0) 429 | RTS 430 | 431 | musicdata: 432 | dc.b $64 433 | dc.b $6F 434 | dc.b $73 435 | dc.b $2E 436 | dc.b $6C 437 | dc.b $69 438 | dc.b $62 439 | dc.b $72 440 | dc.b $61 441 | dc.b $72 442 | dc.b $79 443 | dc.b 0 444 | dc.b 0 445 | dc.b $FC 446 | dc.b 12 447 | dc.b $D8 448 | dc.b 4 449 | dc.b 15 450 | dc.b 5 451 | dc.b 0 452 | dc.b 0 453 | dc.b $1F 454 | dc.l lbL00106E 455 | dc.l 0 456 | dc.l 0 457 | dc.l 0 458 | dc.l 0 459 | dc.l 0 460 | dc.l 0 461 | dc.l 0 462 | dc.l 0 463 | dc.l 0 464 | dc.l 0 465 | dc.l 0 466 | dc.w $3E 467 | dc.w $47 468 | dc.w $4B 469 | dc.w $50 470 | dc.w $55 471 | dc.w $5A 472 | dc.w $5F 473 | dc.w $65 474 | dc.w $6B 475 | dc.w $71 476 | dc.w $78 477 | dc.w $7F 478 | dc.w $87 479 | dc.w $8F 480 | dc.w $97 481 | dc.w $A0 482 | dc.w $AA 483 | dc.w $B4 484 | dc.w $BE 485 | dc.w $CA 486 | dc.w $D6 487 | dc.w $E2 488 | dc.w $F0 489 | dc.w $FE 490 | dc.w $10D 491 | dc.w $11D 492 | dc.w $12E 493 | dc.w $140 494 | dc.w $153 495 | dc.w $168 496 | dc.w $17D 497 | dc.w $194 498 | dc.w $1AC 499 | dc.w $1C5 500 | dc.w $1E0 501 | dc.w $1FC 502 | dc.w $21A 503 | dc.w $23A 504 | dc.w $25C 505 | dc.w $280 506 | dc.w $2A6 507 | dc.w $2D0 508 | dc.w $2FA 509 | dc.w $328 510 | dc.w $358 511 | dc.w $38A 512 | dc.w $3C0 513 | dc.w $3F8 514 | dc.w $434 515 | dc.w $474 516 | dc.w $4B8 517 | dc.w $500 518 | dc.w $54C 519 | dc.w $5A0 520 | dc.w $5F4 521 | dc.w $650 522 | dc.w $6B0 523 | dc.w $714 524 | dc.w $780 525 | dc.w $7F0 526 | dc.w $868 527 | dc.w $8E8 528 | dc.w $970 529 | dc.w $A00 530 | dc.w $A98 531 | dc.w $B40 532 | dc.w $BE8 533 | dc.w $CA0 534 | dc.w $D60 535 | dc.w $E28 536 | dc.w $F00 537 | dc.w $FE0 538 | dc.l lbB000950 539 | dc.l $40003 540 | dc.l lbB000934 541 | dc.w 2 542 | dc.w 1 543 | dc.w $1F40 544 | dc.l lbB000966 545 | dc.w 6 546 | dc.w 5 547 | dc.l lbB0009C4 548 | dc.w 0 549 | dc.w 0 550 | dc.l lbB000938 551 | dc.w 1 552 | dc.w 0 553 | dc.l lbB000934 554 | dc.w 2 555 | dc.w 1 556 | dc.w $1F40 557 | dc.l lbB000960 558 | dc.w 3 559 | dc.w 2 560 | dc.l lbB000984 561 | dc.w 0 562 | dc.w 0 563 | dc.l lbB000938 564 | dc.w 1 565 | dc.w 0 566 | dc.l lbB000934 567 | dc.w 2 568 | dc.w 1 569 | dc.w $1F40 570 | dc.l lbB000954 571 | dc.w 3 572 | dc.w 2 573 | dc.l lbB000984 574 | dc.w 0 575 | dc.w 0 576 | dc.l lbB00094A 577 | dc.w 6 578 | dc.w 5 579 | dc.l lbB000934 580 | dc.w 3 581 | dc.w 2 582 | dc.w $1F40 583 | dc.l lbB000958 584 | dc.w 9 585 | dc.w 8 586 | dc.l lbB0009C4 587 | dc.w 0 588 | dc.w 0 589 | dc.l lbB000938 590 | dc.w 6 591 | dc.w 5 592 | dc.l lbB000934 593 | dc.w 3 594 | dc.w 2 595 | dc.w $1F40 596 | dc.l lbB000954 597 | dc.w 3 598 | dc.w 2 599 | dc.l lbB000984 600 | dc.l lbW000A04 601 | dc.l lbB000944 602 | dc.w 6 603 | dc.w 5 604 | dc.l lbB000934 605 | dc.w 3 606 | dc.w 2 607 | dc.w $1F40 608 | dc.l lbB000954 609 | dc.w 3 610 | dc.w 2 611 | dc.l lbB0009C4 612 | dc.w 0 613 | dc.w 0 614 | dc.l lbB000950 615 | dc.w 4 616 | dc.w 3 617 | dc.l lbB000934 618 | dc.w 2 619 | dc.w 1 620 | dc.w $1F40 621 | dc.l lbB00096C 622 | dc.w 6 623 | dc.w 5 624 | dc.l lbW000A04 625 | dc.w 0 626 | dc.w 0 627 | dc.l lbB000950 628 | dc.w 4 629 | dc.w 3 630 | dc.l lbB000934 631 | dc.w 2 632 | dc.w 1 633 | dc.w $1F40 634 | dc.l lbB000972 635 | dc.w 6 636 | dc.w 5 637 | dc.l lbW000A04 638 | dc.w 0 639 | dc.w 0 640 | dc.l lbB000950 641 | dc.w 4 642 | dc.w 3 643 | dc.l lbB000934 644 | dc.w 2 645 | dc.w 1 646 | dc.w $1F40 647 | dc.l lbB000978 648 | dc.w 6 649 | dc.w 5 650 | dc.l lbW000A04 651 | dc.w 0 652 | dc.w 0 653 | dc.l lbB000950 654 | dc.w 4 655 | dc.w 3 656 | dc.l lbB000934 657 | dc.w 2 658 | dc.w 1 659 | dc.w $1F40 660 | dc.l lbB00097E 661 | dc.w 6 662 | dc.w 5 663 | dc.l lbW000A04 664 | dc.w 0 665 | dc.w 0 666 | dc.w 0 667 | dc.w 0 668 | dc.l lbW000AA6 669 | dc.l lbW000ACA 670 | dc.l lbW000B28 671 | dc.l lbW000CB6 672 | dc.w $303 673 | dc.w $303 674 | dc.l lbW000AA6 675 | dc.l lbW000AE8 676 | dc.l lbW000B3C 677 | dc.l lbW000CCA 678 | dc.w $303 679 | dc.w $303 680 | dc.l lbW000AA6 681 | dc.l lbW000B06 682 | dc.l lbL000A96 683 | dc.l lbL000A96 684 | dc.w $303 685 | dc.w $303 686 | dc.l lbW000DA4 687 | dc.l lbL000A96 688 | dc.l lbW000B5A 689 | dc.l lbW000CE6 690 | dc.w $303 691 | dc.w $303 692 | dc.l lbW000AA6 693 | dc.l lbW000ACA 694 | dc.l lbL000A96 695 | dc.l lbL000A96 696 | dc.w $303 697 | dc.w $303 698 | dc.l lbW000AA6 699 | dc.l lbW000AE8 700 | dc.l lbW000C4E 701 | dc.l lbW000D6E 702 | dc.w $303 703 | dc.w $303 704 | dc.l lbW000AA6 705 | dc.l lbW000B06 706 | dc.l lbW000C68 707 | dc.l lbW000D88 708 | dc.w $303 709 | dc.w $303 710 | dc.l lbW000DA4 711 | dc.l lbL000A96 712 | dc.l lbL000A96 713 | dc.l lbL000A96 714 | dc.w $303 715 | dc.w $303 716 | dc.l lbW000AA6 717 | dc.l lbW000B78 718 | dc.l lbW000BDC 719 | dc.l lbW000D02 720 | dc.w $FC03 721 | dc.w $F7F7 722 | dc.l lbW000AA6 723 | dc.l lbW000B96 724 | dc.l lbW000BFA 725 | dc.l lbW000D1E 726 | dc.w $FF03 727 | dc.w $F7F7 728 | dc.l lbW000AA6 729 | dc.l lbW000BB8 730 | dc.l lbW000BDC 731 | dc.l lbW000D02 732 | dc.w $103 733 | dc.w $F7F7 734 | dc.l lbW000DA4 735 | dc.l lbL000A96 736 | dc.l lbW000BFA 737 | dc.l lbW000D1E 738 | dc.w $303 739 | dc.w $F7F7 740 | dc.l lbW000AA6 741 | dc.l lbW000B78 742 | dc.l lbW000BDC 743 | dc.l lbW000D02 744 | dc.l $FC030303 745 | dc.l lbW000AA6 746 | dc.l lbW000B96 747 | dc.l lbW000BFA 748 | dc.l lbW000D1E 749 | dc.l $FF030303 750 | dc.l lbW000AA6 751 | dc.l lbW000BB8 752 | dc.l lbW000C1A 753 | dc.l lbW000D3C 754 | dc.l $1030303 755 | dc.l lbW000DA4 756 | dc.l lbL000A96 757 | dc.l lbL000C3C 758 | dc.l lbL000D5C 759 | dc.l $3030303 760 | dc.l lbW000AA6 761 | dc.l lbW000DCA 762 | dc.l lbW000E3E 763 | dc.l lbW000EB2 764 | dc.l $8030303 765 | dc.l lbW000AA6 766 | dc.l lbW000DE8 767 | dc.l lbW000E5C 768 | dc.l lbW000ECE 769 | dc.l $8030303 770 | dc.l lbW000AA6 771 | dc.l lbW000E04 772 | dc.l lbW000E7A 773 | dc.l lbW000EEC 774 | dc.l $8030303 775 | dc.l lbW000DA4 776 | dc.l lbW000E22 777 | dc.l lbW000E98 778 | dc.l lbW000F0A 779 | dc.l $8030303 780 | dc.l lbW000AA6 781 | dc.l lbW000DCA 782 | dc.l lbW000E3E 783 | dc.l lbW000EB2 784 | dc.l $8030303 785 | dc.l lbW000AA6 786 | dc.l lbW000DE8 787 | dc.l lbW000E5C 788 | dc.l lbW000ECE 789 | dc.l $8030303 790 | dc.l lbW000AA6 791 | dc.l lbW000E04 792 | dc.l lbW000E7A 793 | dc.l lbW000EEC 794 | dc.l $8030303 795 | dc.l lbW000DA4 796 | dc.l lbW000E22 797 | dc.l lbW000F26 798 | dc.l lbW000F44 799 | dc.l $8030303 800 | dc.l lbW000AA6 801 | dc.l lbW000F60 802 | dc.l lbW000F9A 803 | dc.l lbW001004 804 | dc.l $A030303 805 | dc.l lbW000AA6 806 | dc.l lbW000F86 807 | dc.l lbW000FB4 808 | dc.l lbW00101E 809 | dc.l $A030303 810 | dc.l lbW000AA6 811 | dc.l lbW000F60 812 | dc.l lbW000FCE 813 | dc.l lbW001038 814 | dc.l $A030303 815 | dc.l lbW000DA4 816 | dc.l lbW000F86 817 | dc.l lbW000FEA 818 | dc.l lbW001054 819 | dc.l $A030303 820 | dc.l lbW000AA6 821 | dc.l lbW000DCA 822 | dc.l lbW000E3E 823 | dc.l lbW000EB2 824 | dc.l $8030303 825 | dc.l lbW000AA6 826 | dc.l lbW000DE8 827 | dc.l lbW000E5C 828 | dc.l lbW000ECE 829 | dc.l $8030303 830 | dc.l lbW000AA6 831 | dc.l lbW000E04 832 | dc.l lbW000E7A 833 | dc.l lbW000EEC 834 | dc.l $8030303 835 | dc.l lbW000DA4 836 | dc.l lbW000E22 837 | dc.l lbW000E98 838 | dc.l lbW000F0A 839 | dc.l $8030303 840 | dc.l 0 841 | lbB000934: 842 | dc.b 10 843 | dc.b 10 844 | dc.b $1E 845 | dc.b 0 846 | lbB000938: 847 | dc.b $40 848 | dc.b $36 849 | dc.b $2C 850 | dc.b $22 851 | dc.b $18 852 | dc.b 14 853 | dc.b $40 854 | dc.b $1C 855 | dc.b $36 856 | dc.b $32 857 | dc.b $2F 858 | dc.b $2C 859 | lbB000944: 860 | dc.b $3C 861 | dc.b $32 862 | dc.b $28 863 | dc.b $1E 864 | dc.b $14 865 | dc.b 10 866 | lbB00094A: 867 | dc.b $2C 868 | dc.b $1C 869 | dc.b $22 870 | dc.b $14 871 | dc.b $14 872 | dc.b $14 873 | lbB000950: 874 | dc.b $40 875 | dc.b $32 876 | dc.b $28 877 | dc.b $40 878 | lbB000954: 879 | dc.b $32 880 | dc.b 10 881 | dc.b 5 882 | dc.b 0 883 | lbB000958: 884 | dc.b 0 885 | dc.b 1 886 | dc.b 2 887 | dc.b 4 888 | dc.b 8 889 | dc.b $10 890 | dc.b $20 891 | dc.b $40 892 | lbB000960: 893 | dc.b 0 894 | dc.b $14 895 | dc.b $28 896 | dc.b $32 897 | dc.b $46 898 | dc.b $50 899 | lbB000966: 900 | dc.b 0 901 | dc.b 10 902 | dc.b $14 903 | dc.b $1E 904 | dc.b $23 905 | dc.b $28 906 | lbB00096C: 907 | dc.b 0 908 | dc.b 15 909 | dc.b $19 910 | dc.b $23 911 | dc.b $28 912 | dc.b $2D 913 | lbB000972: 914 | dc.b $14 915 | dc.b $1E 916 | dc.b $28 917 | dc.b $2D 918 | dc.b $32 919 | dc.b $3C 920 | lbB000978: 921 | dc.b $19 922 | dc.b $23 923 | dc.b $2D 924 | dc.b $32 925 | dc.b $37 926 | dc.b $5A 927 | lbB00097E: 928 | dc.b $1E 929 | dc.b $28 930 | dc.b $32 931 | dc.b $37 932 | dc.b $3C 933 | dc.b $78 934 | lbB000984: 935 | dc.b $78 936 | dc.b $6E 937 | dc.b $64 938 | dc.b $5A 939 | dc.b $50 940 | dc.b $46 941 | dc.b $3C 942 | dc.b $32 943 | dc.b $28 944 | dc.b $1E 945 | dc.b $14 946 | dc.b 10 947 | dc.b 0 948 | dc.b $78 949 | dc.b $6E 950 | dc.b $64 951 | dc.b $5A 952 | dc.b $50 953 | dc.b $46 954 | dc.b $3C 955 | dc.b $32 956 | dc.b $28 957 | dc.b $1E 958 | dc.b $14 959 | dc.b 10 960 | dc.b 0 961 | dc.b 0 962 | dc.b 0 963 | dc.b 0 964 | dc.b 0 965 | dc.b 0 966 | dc.b 0 967 | dc.b 0 968 | dc.b $7D 969 | dc.b $7E 970 | dc.b $7F 971 | dc.b $7F 972 | dc.b $7F 973 | dc.b $7F 974 | dc.b $7F 975 | dc.b $7F 976 | dc.b $7F 977 | dc.b $7F 978 | dc.b $7F 979 | dc.b $7F 980 | dc.b $7E 981 | dc.b $7D 982 | dc.b 0 983 | dc.b 0 984 | dc.b $7D 985 | dc.b $7E 986 | dc.b $7F 987 | dc.b $7F 988 | dc.b $7F 989 | dc.b $7F 990 | dc.b $7F 991 | dc.b $7F 992 | dc.b $7F 993 | dc.b $7F 994 | dc.b $7F 995 | dc.b $7F 996 | dc.b $7E 997 | dc.b $7D 998 | dc.b 0 999 | lbB0009C4: 1000 | dc.b 1 1001 | dc.b 2 1002 | dc.b 4 1003 | dc.b 8 1004 | dc.b $10 1005 | dc.b $20 1006 | dc.b $40 1007 | dc.b $7F 1008 | dc.b $40 1009 | dc.b $20 1010 | dc.b $10 1011 | dc.b 8 1012 | dc.b 4 1013 | dc.b 2 1014 | dc.b 1 1015 | dc.b $B0 1016 | dc.b $FF 1017 | dc.b $FE 1018 | dc.b $FC 1019 | dc.b $F8 1020 | dc.b $F0 1021 | dc.b $E0 1022 | dc.b $C0 1023 | dc.b $81 1024 | dc.b $C0 1025 | dc.b $E0 1026 | dc.b $F0 1027 | dc.b $F8 1028 | dc.b $FC 1029 | dc.b $FE 1030 | dc.b $FF 1031 | dc.b 0 1032 | dc.b 1 1033 | dc.b 2 1034 | dc.b 4 1035 | dc.b 8 1036 | dc.b $10 1037 | dc.b $20 1038 | dc.b $40 1039 | dc.b $7F 1040 | dc.b $40 1041 | dc.b $20 1042 | dc.b $10 1043 | dc.b 8 1044 | dc.b 4 1045 | dc.b 2 1046 | dc.b 1 1047 | dc.b 0 1048 | dc.b 1 1049 | dc.b 2 1050 | dc.b 4 1051 | dc.b 8 1052 | dc.b $10 1053 | dc.b $20 1054 | dc.b $40 1055 | dc.b $7F 1056 | dc.b $40 1057 | dc.b $20 1058 | dc.b $10 1059 | dc.b 8 1060 | dc.b 4 1061 | dc.b 2 1062 | dc.b 1 1063 | dc.b 0 1064 | lbW000A04: 1065 | dc.w $49 1066 | dc.w $4824 1067 | dc.w $440C 1068 | dc.w $1B0B 1069 | dc.w $36FB 1070 | dc.w $FADC 1071 | dc.w $6DA 1072 | dc.w $F4EE 1073 | dc.w $20E8 1074 | dc.w $E8C7 1075 | dc.w $EDBE 1076 | dc.w $D7D2 1077 | dc.w $9DA 1078 | dc.w $E7D4 1079 | dc.w $9E7 1080 | dc.w $90A 1081 | dc.w 0 1082 | dc.w 0 1083 | dc.w 0 1084 | dc.w 0 1085 | dc.w 0 1086 | dc.w $303 1087 | dc.w $707 1088 | dc.w $303 1089 | dc.w $FEFE 1090 | dc.w $202 1091 | dc.w $505 1092 | dc.w $202 1093 | dc.w 0 1094 | dc.w $303 1095 | dc.w $808 1096 | dc.w $303 1097 | dc.w 0 1098 | dc.w $505 1099 | dc.w $707 1100 | dc.w $505 1101 | dc.w 0 1102 | dc.w $202 1103 | dc.w $707 1104 | dc.w $202 1105 | dc.w $FDFD 1106 | dc.w 0 1107 | dc.w $505 1108 | dc.w 0 1109 | dc.w $FBFB 1110 | dc.w 0 1111 | dc.w $404 1112 | dc.w 0 1113 | dc.w 0 1114 | dc.w $505 1115 | dc.w $A0A 1116 | dc.w $505 1117 | dc.w 0 1118 | dc.w $303 1119 | dc.w $808 1120 | dc.w $303 1121 | dc.w 0 1122 | dc.w $303 1123 | dc.w $707 1124 | dc.w $303 1125 | dc.w $FEFE 1126 | dc.w $202 1127 | dc.w $505 1128 | dc.w $202 1129 | dc.w $9AFE 1130 | dc.w 0 1131 | dc.w 0 1132 | dc.w 0 1133 | dc.w 0 1134 | dc.w 0 1135 | dc.w 0 1136 | dc.w 0 1137 | dc.w 0 1138 | lbL000A96: 1139 | dc.l 0 1140 | dc.l 0 1141 | dc.l 0 1142 | dc.l 0 1143 | lbW000AA6: 1144 | dc.w $C440 1145 | dc.w $9940 1146 | dc.w $9805 1147 | dc.w 0 1148 | dc.w $C446 1149 | dc.w 0 1150 | dc.w $C447 1151 | dc.w 0 1152 | dc.w $C448 1153 | dc.w 0 1154 | dc.w $C449 1155 | dc.w 0 1156 | dc.w $C448 1157 | dc.w 0 1158 | dc.w $C447 1159 | dc.w 0 1160 | dc.w $C446 1161 | dc.w 0 1162 | lbW000ACA: 1163 | dc.w $E841 1164 | dc.w $9940 1165 | dc.w $9C01 1166 | dc.w 0 1167 | dc.w 0 1168 | dc.w 0 1169 | dc.w $E841 1170 | dc.w $9C01 1171 | dc.w 0 1172 | dc.w 0 1173 | dc.w 0 1174 | dc.w $E841 1175 | dc.w $9C02 1176 | dc.w 0 1177 | dc.w 0 1178 | lbW000AE8: 1179 | dc.w $E841 1180 | dc.w $9940 1181 | dc.w $9C01 1182 | dc.w 0 1183 | dc.w 0 1184 | dc.w 0 1185 | dc.w $E841 1186 | dc.w $9C01 1187 | dc.w 0 1188 | dc.w 0 1189 | dc.w 0 1190 | dc.w $E841 1191 | dc.w $9C03 1192 | dc.w 0 1193 | dc.w 0 1194 | lbW000B06: 1195 | dc.w $E841 1196 | dc.w $9940 1197 | dc.w $9C01 1198 | dc.w 0 1199 | dc.w 0 1200 | dc.w 0 1201 | dc.w $E841 1202 | dc.w $9C01 1203 | dc.w 0 1204 | dc.w 0 1205 | dc.w 0 1206 | dc.w $E841 1207 | dc.w $9C01 1208 | dc.w 0 1209 | dc.w $E842 1210 | dc.w $9C02 1211 | dc.w 0 1212 | lbW000B28: 1213 | dc.w $E843 1214 | dc.w $9940 1215 | dc.w 0 1216 | dc.w 0 1217 | dc.w 0 1218 | dc.w 0 1219 | dc.w 0 1220 | dc.w 0 1221 | dc.w 0 1222 | dc.w 0 1223 | lbW000B3C: 1224 | dc.w 0 1225 | dc.w $E843 1226 | dc.w $9940 1227 | dc.w 0 1228 | dc.w $EA43 1229 | dc.w 0 1230 | dc.w $EB43 1231 | dc.w 0 1232 | dc.w $ED43 1233 | dc.w 0 1234 | dc.w $E643 1235 | dc.w 0 1236 | dc.w 0 1237 | dc.w $E843 1238 | dc.w 0 1239 | lbW000B5A: 1240 | dc.w 0 1241 | dc.w $E843 1242 | dc.w $9940 1243 | dc.w 0 1244 | dc.w $EA43 1245 | dc.w 0 1246 | dc.w $EB43 1247 | dc.w 0 1248 | dc.w $ED43 1249 | dc.w 0 1250 | dc.w $E643 1251 | dc.w 0 1252 | dc.w 0 1253 | dc.w $E343 1254 | dc.w 0 1255 | lbW000B78: 1256 | dc.w $E842 1257 | dc.w $9940 1258 | dc.w $9C04 1259 | dc.w 0 1260 | dc.w 0 1261 | dc.w 0 1262 | dc.w $E841 1263 | dc.w $9C05 1264 | dc.w 0 1265 | dc.w 0 1266 | dc.w 0 1267 | dc.w $E841 1268 | dc.w $9C01 1269 | dc.w 0 1270 | dc.w 0 1271 | lbW000B96: 1272 | dc.w $E842 1273 | dc.w $9940 1274 | dc.w $9C04 1275 | dc.w 0 1276 | dc.w 0 1277 | dc.w 0 1278 | dc.w $E841 1279 | dc.w $9C05 1280 | dc.w 0 1281 | dc.w 0 1282 | dc.w 0 1283 | dc.w $E841 1284 | dc.w $9C01 1285 | dc.w 0 1286 | dc.w $E841 1287 | dc.w $9C01 1288 | dc.w 0 1289 | lbW000BB8: 1290 | dc.w $E842 1291 | dc.w $9C01 1292 | dc.w 0 1293 | dc.w 0 1294 | dc.w $E841 1295 | dc.w $9C01 1296 | dc.w 0 1297 | dc.w 0 1298 | dc.w $E841 1299 | dc.w $9C05 1300 | dc.w 0 1301 | dc.w 0 1302 | dc.w $E841 1303 | dc.w $9C02 1304 | dc.w 0 1305 | dc.w $E842 1306 | dc.w $9C01 1307 | dc.w 0 1308 | lbW000BDC: 1309 | dc.w 0 1310 | dc.w $E843 1311 | dc.w $9940 1312 | dc.w 0 1313 | dc.w $EA43 1314 | dc.w 0 1315 | dc.w $E843 1316 | dc.w 0 1317 | dc.w $F043 1318 | dc.w 0 1319 | dc.w $EF43 1320 | dc.w 0 1321 | dc.w 0 1322 | dc.w $E843 1323 | dc.w 0 1324 | lbW000BFA: 1325 | dc.w 0 1326 | dc.w $E843 1327 | dc.w $9940 1328 | dc.w 0 1329 | dc.w $EA43 1330 | dc.w 0 1331 | dc.w $E843 1332 | dc.w 0 1333 | dc.w $F043 1334 | dc.w 0 1335 | dc.w $EF43 1336 | dc.w 0 1337 | dc.w $EB43 1338 | dc.w 0 1339 | dc.w $E843 1340 | dc.w 0 1341 | lbW000C1A: 1342 | dc.w 0 1343 | dc.w $E843 1344 | dc.w $9940 1345 | dc.w 0 1346 | dc.w $EA43 1347 | dc.w 0 1348 | dc.w $E843 1349 | dc.w 0 1350 | dc.w $F043 1351 | dc.w 0 1352 | dc.w $EF43 1353 | dc.w 0 1354 | dc.w $EB43 1355 | dc.w 0 1356 | dc.w $E843 1357 | dc.w $9C01 1358 | dc.w 0 1359 | lbL000C3C: 1360 | dc.l 0 1361 | dc.l 0 1362 | dc.l $9B140000 1363 | dc.l 0 1364 | dc.w 0 1365 | lbW000C4E: 1366 | dc.w 0 1367 | dc.w $E343 1368 | dc.w 0 1369 | dc.w $E643 1370 | dc.w 0 1371 | dc.w $E343 1372 | dc.w 0 1373 | dc.w 0 1374 | dc.w $E843 1375 | dc.w 0 1376 | dc.w 0 1377 | dc.w $E343 1378 | dc.w 0 1379 | lbW000C68: 1380 | dc.w $E643 1381 | dc.w 0 1382 | dc.w $E343 1383 | dc.w 0 1384 | dc.w 0 1385 | dc.w 0 1386 | dc.w $E843 1387 | dc.w 0 1388 | dc.w $EB43 1389 | dc.w 0 1390 | dc.w $EA43 1391 | dc.w 0 1392 | dc.w $E843 1393 | dc.w 0 1394 | dc.w $F043 1395 | dc.w $9900 1396 | dc.w $E8 1397 | dc.w $4300 1398 | dc.w $EF43 1399 | dc.w $E8 1400 | dc.w $4300 1401 | dc.w $F043 1402 | dc.w $E8 1403 | dc.w $4300 1404 | dc.w $EF43 1405 | dc.w $E8 1406 | dc.w $4300 1407 | dc.w $F043 1408 | dc.w $E8 1409 | dc.w $4300 1410 | dc.w $EF43 1411 | dc.w $E8 1412 | dc.w $4300 1413 | dc.w $F043 1414 | dc.w $E8 1415 | dc.w $4300 1416 | dc.w $EF43 1417 | dc.w $E8 1418 | dc.w $4300 1419 | lbW000CB6: 1420 | dc.w $E8 1421 | dc.w $4599 1422 | dc.w $4000 1423 | dc.w 0 1424 | dc.w 0 1425 | dc.w 0 1426 | dc.w 0 1427 | dc.w 0 1428 | dc.w 0 1429 | dc.w 0 1430 | lbW000CCA: 1431 | dc.w 0 1432 | dc.w $E8 1433 | dc.w $4500 1434 | dc.w $EA 1435 | dc.w $4500 1436 | dc.w $EB 1437 | dc.w $4500 1438 | dc.w $ED 1439 | dc.w $4500 1440 | dc.w $E6 1441 | dc.w $4500 1442 | dc.w 0 1443 | dc.w $E8 1444 | dc.w $4500 1445 | lbW000CE6: 1446 | dc.w 0 1447 | dc.w $E8 1448 | dc.w $4500 1449 | dc.w $EA 1450 | dc.w $4500 1451 | dc.w $EB 1452 | dc.w $4500 1453 | dc.w $ED 1454 | dc.w $4500 1455 | dc.w $E6 1456 | dc.w $4500 1457 | dc.w 0 1458 | dc.w $E3 1459 | dc.w $4500 1460 | lbW000D02: 1461 | dc.w 0 1462 | dc.w $E8 1463 | dc.w $4500 1464 | dc.w $EA 1465 | dc.w $4500 1466 | dc.w $E8 1467 | dc.w $4500 1468 | dc.w $F0 1469 | dc.w $4500 1470 | dc.w $EF 1471 | dc.w $4500 1472 | dc.w 0 1473 | dc.w $E8 1474 | dc.w $4500 1475 | lbW000D1E: 1476 | dc.w 0 1477 | dc.w $E8 1478 | dc.w $4500 1479 | dc.w $EA 1480 | dc.w $4500 1481 | dc.w $E8 1482 | dc.w $4500 1483 | dc.w $F0 1484 | dc.w $4500 1485 | dc.w $EF 1486 | dc.w $4500 1487 | dc.w $EB 1488 | dc.w $4500 1489 | dc.w $E8 1490 | dc.w $4500 1491 | lbW000D3C: 1492 | dc.w 0 1493 | dc.w $E8 1494 | dc.w $4500 1495 | dc.w $EA 1496 | dc.w $4500 1497 | dc.w $E8 1498 | dc.w $4500 1499 | dc.w $F0 1500 | dc.w $4500 1501 | dc.w $EF 1502 | dc.w $4500 1503 | dc.w $EB 1504 | dc.w $4500 1505 | dc.w $E8 1506 | dc.w $459C 1507 | dc.w $100 1508 | lbL000D5C: 1509 | dc.l 0 1510 | dc.l 0 1511 | dc.l $9B3C00 1512 | dc.l 0 1513 | dc.w 0 1514 | lbW000D6E: 1515 | dc.w 0 1516 | dc.w $E3 1517 | dc.w $4500 1518 | dc.w $E6 1519 | dc.w $4500 1520 | dc.w $E3 1521 | dc.w $4500 1522 | dc.w 0 1523 | dc.w $E8 1524 | dc.w $4500 1525 | dc.w 0 1526 | dc.w $E3 1527 | dc.w $4500 1528 | lbW000D88: 1529 | dc.w $E6 1530 | dc.w $4500 1531 | dc.w $E3 1532 | dc.w $4500 1533 | dc.w 0 1534 | dc.w 0 1535 | dc.w $E8 1536 | dc.w $4500 1537 | dc.w $EB 1538 | dc.w $4500 1539 | dc.w $EA 1540 | dc.w $4500 1541 | dc.w $E8 1542 | dc.w $4500 1543 | lbW000DA4: 1544 | dc.w $C440 1545 | dc.w $9940 1546 | dc.w $9805 1547 | dc.w 0 1548 | dc.w $C446 1549 | dc.w 0 1550 | dc.w $C447 1551 | dc.w 0 1552 | dc.w $C448 1553 | dc.w 0 1554 | dc.w $C449 1555 | dc.w 0 1556 | dc.w $C448 1557 | dc.w 0 1558 | dc.w $C447 1559 | dc.w 0 1560 | dc.w $C446 1561 | dc.w $C4 1562 | dc.w $4600 1563 | lbW000DCA: 1564 | dc.w $E141 1565 | dc.w $9940 1566 | dc.w $9C03 1567 | dc.w 0 1568 | dc.w 0 1569 | dc.w $E141 1570 | dc.w $9C03 1571 | dc.w 0 1572 | dc.w 0 1573 | dc.w $E141 1574 | dc.w $9C01 1575 | dc.w 0 1576 | dc.w 0 1577 | dc.w 0 1578 | dc.w 0 1579 | lbW000DE8: 1580 | dc.w $E141 1581 | dc.w $9C03 1582 | dc.w 0 1583 | dc.w $E141 1584 | dc.w $9C03 1585 | dc.w 0 1586 | dc.w 0 1587 | dc.w $E141 1588 | dc.w $9C01 1589 | dc.w 0 1590 | dc.w 0 1591 | dc.w 0 1592 | dc.w 0 1593 | dc.w 0 1594 | lbW000E04: 1595 | dc.w $E141 1596 | dc.w $9940 1597 | dc.w $9C02 1598 | dc.w 0 1599 | dc.w 0 1600 | dc.w $E141 1601 | dc.w $9C02 1602 | dc.w 0 1603 | dc.w 0 1604 | dc.w 0 1605 | dc.w 0 1606 | dc.w $E141 1607 | dc.w $9C02 1608 | dc.w 0 1609 | dc.w 0 1610 | lbW000E22: 1611 | dc.w $E141 1612 | dc.w $9C06 1613 | dc.w 0 1614 | dc.w $E141 1615 | dc.w $9C06 1616 | dc.w 0 1617 | dc.w 0 1618 | dc.w $E141 1619 | dc.w $9C07 1620 | dc.w 0 1621 | dc.w 0 1622 | dc.w 0 1623 | dc.w 0 1624 | dc.w 0 1625 | lbW000E3E: 1626 | dc.w 0 1627 | dc.w $DF43 1628 | dc.w $9940 1629 | dc.w 0 1630 | dc.w $E143 1631 | dc.w 0 1632 | dc.w $DF43 1633 | dc.w 0 1634 | dc.w $E143 1635 | dc.w 0 1636 | dc.w $E4 1637 | dc.w $4300 1638 | dc.w 0 1639 | dc.w $E143 1640 | dc.w 0 1641 | lbW000E5C: 1642 | dc.w 0 1643 | dc.w $DF43 1644 | dc.w $9940 1645 | dc.w 0 1646 | dc.w $E143 1647 | dc.w 0 1648 | dc.w $DF43 1649 | dc.w 0 1650 | dc.w $E143 1651 | dc.w 0 1652 | dc.w $E6 1653 | dc.w $4300 1654 | dc.w 0 1655 | dc.w $E143 1656 | dc.w 0 1657 | lbW000E7A: 1658 | dc.w 0 1659 | dc.w $DF43 1660 | dc.w $9940 1661 | dc.w 0 1662 | dc.w $E143 1663 | dc.w 0 1664 | dc.w $DF43 1665 | dc.w 0 1666 | dc.w $E143 1667 | dc.w 0 1668 | dc.w $E8 1669 | dc.w $4300 1670 | dc.w 0 1671 | dc.w $E143 1672 | dc.w 0 1673 | lbW000E98: 1674 | dc.w 0 1675 | dc.w $EB43 1676 | dc.w $9940 1677 | dc.w 0 1678 | dc.w 0 1679 | dc.w $E843 1680 | dc.w 0 1681 | dc.w 0 1682 | dc.w $EB43 1683 | dc.w 0 1684 | dc.w 0 1685 | dc.w $ED43 1686 | dc.w 0 1687 | lbW000EB2: 1688 | dc.w 0 1689 | dc.w $DF 1690 | dc.w $4399 1691 | dc.w $4000 1692 | dc.w $E1 1693 | dc.w $4300 1694 | dc.w $DF 1695 | dc.w $4300 1696 | dc.w $E1 1697 | dc.w $4300 1698 | dc.w 0 1699 | dc.w $E443 1700 | dc.w 0 1701 | dc.w $E1 1702 | lbW000ECE: 1703 | dc.w $E143 1704 | dc.w 0 1705 | dc.w $DF 1706 | dc.w $4399 1707 | dc.w $4000 1708 | dc.w $E1 1709 | dc.w $4300 1710 | dc.w $DF 1711 | dc.w $4300 1712 | dc.w $E1 1713 | dc.w $4300 1714 | dc.w 0 1715 | dc.w $E643 1716 | dc.w 0 1717 | dc.w $E1 1718 | lbW000EEC: 1719 | dc.w $E143 1720 | dc.w 0 1721 | dc.w $DF 1722 | dc.w $4399 1723 | dc.w $4000 1724 | dc.w $E1 1725 | dc.w $4300 1726 | dc.w $DF 1727 | dc.w $4300 1728 | dc.w $E1 1729 | dc.w $4300 1730 | dc.w 0 1731 | dc.w $E843 1732 | dc.w 0 1733 | dc.w $E1 1734 | lbW000F0A: 1735 | dc.w $E143 1736 | dc.w 0 1737 | dc.w $EB 1738 | dc.w $4399 1739 | dc.w $4000 1740 | dc.w 0 1741 | dc.w $E8 1742 | dc.w $4300 1743 | dc.w 0 1744 | dc.w $EB 1745 | dc.w $4300 1746 | dc.w 0 1747 | dc.w $ED 1748 | dc.w $4300 1749 | lbW000F26: 1750 | dc.w 0 1751 | dc.w $DF43 1752 | dc.w $9940 1753 | dc.w 0 1754 | dc.w $E143 1755 | dc.w 0 1756 | dc.w $DF43 1757 | dc.w 0 1758 | dc.w $ED43 1759 | dc.w 0 1760 | dc.w $EB 1761 | dc.w $4300 1762 | dc.w 0 1763 | dc.w $E843 1764 | dc.w 0 1765 | lbW000F44: 1766 | dc.w 0 1767 | dc.w $DF 1768 | dc.w $4399 1769 | dc.w $4000 1770 | dc.w $E1 1771 | dc.w $4300 1772 | dc.w $DF 1773 | dc.w $4300 1774 | dc.w $ED 1775 | dc.w $4300 1776 | dc.w 0 1777 | dc.w $EB43 1778 | dc.w 0 1779 | dc.w $E3 1780 | lbW000F60: 1781 | dc.w $E341 1782 | dc.w $9940 1783 | dc.w $9C08 1784 | dc.w 0 1785 | dc.w $E341 1786 | dc.w $9C08 1787 | dc.w 0 1788 | dc.w 0 1789 | dc.w $E342 1790 | dc.w $9C09 1791 | dc.w 0 1792 | dc.w 0 1793 | dc.w $E341 1794 | dc.w $9C0B 1795 | dc.w 0 1796 | dc.w 0 1797 | dc.w $E341 1798 | dc.w $9C0A 1799 | dc.w 0 1800 | lbW000F86: 1801 | dc.w $E342 1802 | dc.w $9C0A 1803 | dc.w 0 1804 | dc.w 0 1805 | dc.w 0 1806 | dc.w 0 1807 | dc.w 0 1808 | dc.w 0 1809 | dc.w 0 1810 | dc.w 0 1811 | lbW000F9A: 1812 | dc.w $E643 1813 | dc.w $9940 1814 | dc.w 0 1815 | dc.w 0 1816 | dc.w $E343 1817 | dc.w 0 1818 | dc.w 0 1819 | dc.w $E143 1820 | dc.w 0 1821 | dc.w $E343 1822 | dc.w 0 1823 | dc.w 0 1824 | dc.w 0 1825 | lbW000FB4: 1826 | dc.w $E843 1827 | dc.w $9940 1828 | dc.w 0 1829 | dc.w 0 1830 | dc.w $E343 1831 | dc.w 0 1832 | dc.w 0 1833 | dc.w $DE43 1834 | dc.w 0 1835 | dc.w $E343 1836 | dc.w 0 1837 | dc.w 0 1838 | dc.w 0 1839 | lbW000FCE: 1840 | dc.w $EA43 1841 | dc.w $9940 1842 | dc.w 0 1843 | dc.w 0 1844 | dc.w $E343 1845 | dc.w 0 1846 | dc.w 0 1847 | dc.w $E143 1848 | dc.w 0 1849 | dc.w $E343 1850 | dc.w 0 1851 | dc.w 0 1852 | dc.w $E343 1853 | dc.w 0 1854 | lbW000FEA: 1855 | dc.w $EA43 1856 | dc.w $9940 1857 | dc.w 0 1858 | dc.w $EB43 1859 | dc.w 0 1860 | dc.w $ED43 1861 | dc.w 0 1862 | dc.w $EA43 1863 | dc.w 0 1864 | dc.w 0 1865 | dc.w 0 1866 | dc.w 0 1867 | dc.w 0 1868 | lbW001004: 1869 | dc.w $E6 1870 | dc.w $4399 1871 | dc.w $4000 1872 | dc.w 0 1873 | dc.w $E3 1874 | dc.w $4300 1875 | dc.w 0 1876 | dc.w $E1 1877 | dc.w $4300 1878 | dc.w $E3 1879 | dc.w $4300 1880 | dc.w 0 1881 | dc.w 0 1882 | lbW00101E: 1883 | dc.w $E8 1884 | dc.w $4399 1885 | dc.w $4000 1886 | dc.w 0 1887 | dc.w $E3 1888 | dc.w $4300 1889 | dc.w 0 1890 | dc.w $DE 1891 | dc.w $4300 1892 | dc.w $E3 1893 | dc.w $4300 1894 | dc.w 0 1895 | dc.w 0 1896 | lbW001038: 1897 | dc.w $EA 1898 | dc.w $4399 1899 | dc.w $4000 1900 | dc.w 0 1901 | dc.w $E3 1902 | dc.w $4300 1903 | dc.w 0 1904 | dc.w $E1 1905 | dc.w $4300 1906 | dc.w $E3 1907 | dc.w $4300 1908 | dc.w 0 1909 | dc.w $E3 1910 | dc.w $4300 1911 | lbW001054: 1912 | dc.w $EA 1913 | dc.w $4399 1914 | dc.w $4000 1915 | dc.w $EB 1916 | dc.w $4300 1917 | dc.w $ED 1918 | dc.w $4300 1919 | dc.w $EA 1920 | dc.w $4300 1921 | dc.w 0 1922 | dc.w 0 1923 | dc.w 0 1924 | dc.w 0 1925 | lbL00106E: 1926 | dc.l 0 1927 | dc.l 0 1928 | dc.l 0 1929 | dc.l 3 1930 | dc.l $30000 1931 | dc.l 0 1932 | dc.l 0 1933 | dc.l 0 1934 | dc.l $A5E0000 1935 | dc.l 0 1936 | dc.l 0 1937 | dc.l 0 1938 | dc.l 0 1939 | dc.l 0 1940 | dc.l 0 1941 | dc.l 0 1942 | dc.l 0 1943 | dc.l 0 1944 | dc.l 0 1945 | dc.l 0 1946 | dc.l 0 1947 | dc.l 0 1948 | dc.l 0 1949 | dc.l 0 1950 | dc.l $2F4 1951 | dc.l $30000 1952 | dc.l 0 1953 | dc.l 0 1954 | dc.l 0 1955 | dc.l 3 1956 | dc.l $30000 1957 | dc.l 0 1958 | dc.l 0 1959 | dc.l 0 1960 | dc.l $A5E0000 1961 | dc.l 0 1962 | dc.l 0 1963 | dc.l 0 1964 | dc.l 0 1965 | dc.l 0 1966 | dc.l 0 1967 | dc.l 0 1968 | dc.l 0 1969 | dc.l 0 1970 | dc.l 0 1971 | dc.l 0 1972 | dc.l 0 1973 | dc.l 0 1974 | dc.l 0 1975 | dc.l 0 1976 | dc.l $2F4 1977 | dc.l $30000 1978 | dc.l 0 1979 | dc.l 0 1980 | dc.l 0 1981 | dc.l 3 1982 | dc.l $30000 1983 | dc.l 0 1984 | dc.l 0 1985 | dc.l 0 1986 | dc.l $A5E0000 1987 | dc.l 0 1988 | dc.l 0 1989 | dc.l 0 1990 | dc.l 0 1991 | dc.l 0 1992 | dc.l 0 1993 | dc.l 0 1994 | dc.l 0 1995 | dc.l 0 1996 | dc.l 0 1997 | dc.l 0 1998 | dc.l 0 1999 | dc.l 0 2000 | dc.l 0 2001 | dc.l 0 2002 | dc.l $2F4 2003 | dc.l $30000 2004 | dc.l 0 2005 | dc.l 0 2006 | dc.l 0 2007 | dc.l 3 2008 | dc.l $30000 2009 | dc.l 0 2010 | dc.l 0 2011 | dc.l 0 2012 | dc.l $A5E0000 2013 | dc.l 0 2014 | dc.l 0 2015 | dc.l 0 2016 | dc.l 0 2017 | dc.l 0 2018 | dc.l 0 2019 | dc.l 0 2020 | dc.l 0 2021 | dc.l 0 2022 | dc.l 0 2023 | dc.l 0 2024 | dc.l 0 2025 | dc.l 0 2026 | dc.l 0 2027 | dc.l 0 2028 | dc.l $2F4 2029 | dc.l $30000 2030 | dc.l 0 2031 | dc.l 0 2032 | dc.l 0 2033 | dc.l 0 2034 | dc.l 0 2035 | dc.l 0 2036 | dc.l 0 2037 | dc.l 0 2038 | dc.l 0 2039 | dc.l 0 2040 | dc.l 0 2041 | dc.l 0 2042 | dc.l 0 2043 | dc.l 0 2044 | dc.l 0 2045 | dc.l 0 2046 | dc.l 0 2047 | dc.l 0 2048 | dc.l 0 2049 | dc.l 0 2050 | dc.l 0 2051 | dc.l 0 2052 | dc.l 0 2053 | dc.l 0 2054 | dc.l 0 2055 | dc.l 0 2056 | dc.l 0 2057 | dc.l 0 2058 | dc.l 0 2059 | dc.l 0 2060 | dc.l 0 2061 | dc.l 0 2062 | dc.l 0 2063 | dc.l 0 2064 | dc.l 0 2065 | dc.l 0 2066 | dc.l 0 2067 | dc.l 0 2068 | dc.l 0 2069 | dc.l 0 2070 | dc.l 0 2071 | dc.l 0 2072 | dc.l 0 2073 | dc.l 0 2074 | dc.l 0 2075 | dc.l 0 2076 | dc.l 0 2077 | dc.l 0 2078 | dc.l 0 2079 | dc.l 0 2080 | dc.l 0 2081 | dc.l 0 2082 | dc.l 0 2083 | dc.l 0 2084 | dc.l 0 2085 | dc.l 0 2086 | dc.l 0 2087 | dc.l 0 2088 | dc.l 0 2089 | dc.l 0 2090 | dc.l 0 2091 | dc.l 0 2092 | dc.l 0 2093 | dc.l 0 2094 | dc.l 0 2095 | dc.l 0 2096 | dc.l 0 2097 | dc.l 0 2098 | dc.l 0 2099 | dc.l 0 2100 | dc.l 0 2101 | dc.l 0 2102 | dc.l 0 2103 | dc.l 0 2104 | dc.l 0 2105 | dc.l 0 2106 | dc.l 0 2107 | dc.l 0 2108 | dc.l 0 2109 | dc.l 0 2110 | dc.l 0 2111 | dc.l 0 2112 | dc.l 0 2113 | dc.l 0 2114 | dc.l 0 2115 | dc.l 0 2116 | dc.l 0 2117 | dc.l 0 2118 | dc.l 0 2119 | dc.l 0 2120 | dc.l 0 2121 | dc.l 0 2122 | dc.l 0 2123 | dc.l 0 2124 | dc.l 0 2125 | dc.l 0 2126 | dc.l 0 2127 | dc.l 0 2128 | dc.l 0 2129 | dc.l 0 2130 | dc.l 0 2131 | dc.l 0 2132 | dc.l 0 2133 | dc.l 0 2134 | dc.l 0 2135 | dc.l 0 2136 | dc.l 0 2137 | dc.l 0 2138 | dc.l 0 2139 | dc.l 0 2140 | dc.l 0 2141 | dc.l 0 2142 | dc.l 0 2143 | dc.l 0 2144 | dc.l 0 2145 | dc.l 0 2146 | dc.l 0 2147 | dc.l 0 2148 | dc.l 0 2149 | dc.l 0 2150 | dc.l 0 2151 | dc.l 0 2152 | dc.l 0 2153 | dc.l 0 2154 | dc.l 0 2155 | dc.l 0 2156 | dc.l 0 2157 | dc.l 0 2158 | dc.l 0 2159 | dc.l 0 2160 | dc.l 0 2161 | dc.l 0 2162 | dc.l 0 2163 | dc.l 0 2164 | dc.l 0 2165 | dc.l 0 2166 | dc.l 0 2167 | dc.l 0 2168 | dc.l 0 2169 | dc.l 0 2170 | dc.l 0 2171 | dc.l 0 2172 | dc.l 0 2173 | dc.l 0 2174 | dc.l 0 2175 | dc.l 0 2176 | dc.l 0 2177 | dc.l 0 2178 | dc.l 0 2179 | dc.l 0 2180 | dc.l 0 2181 | dc.l 0 2182 | dc.l 0 2183 | dc.l 0 2184 | dc.l 0 2185 | dc.l 0 2186 | dc.l 0 2187 | dc.l 0 2188 | dc.l 0 2189 | dc.l 0 2190 | dc.l 0 2191 | dc.l 0 2192 | dc.l 0 2193 | dc.l 0 2194 | dc.l 0 2195 | dc.l 0 2196 | dc.l 0 2197 | dc.l 0 2198 | dc.l 0 2199 | dc.l 0 2200 | dc.l 0 2201 | dc.l 0 2202 | dc.l 0 2203 | dc.l 0 2204 | dc.l 0 2205 | dc.l 0 2206 | dc.l 0 2207 | dc.l 0 2208 | dc.l 0 2209 | dc.l 0 2210 | dc.l 0 2211 | dc.l 0 2212 | dc.l 0 2213 | dc.l 0 2214 | dc.l 0 2215 | dc.l 0 2216 | dc.l 0 2217 | dc.l 0 2218 | dc.l 0 2219 | dc.l 0 2220 | dc.l 0 2221 | dc.l 0 2222 | dc.l 0 2223 | dc.l 0 2224 | dc.l 0 2225 | dc.l 0 2226 | dc.l 0 2227 | dc.l 0 2228 | dc.l 0 2229 | dc.l 0 2230 | dc.l 0 2231 | dc.l 0 2232 | dc.l 0 2233 | dc.l 0 2234 | dc.l 0 2235 | dc.l 0 2236 | dc.l 0 2237 | dc.l 0 2238 | dc.l 0 2239 | dc.l 0 2240 | dc.l 0 2241 | dc.l 0 2242 | dc.l 0 2243 | dc.l 0 2244 | dc.l 0 2245 | dc.l 0 2246 | dc.l 0 2247 | dc.l 0 2248 | dc.l 0 2249 | dc.l 0 2250 | dc.l 0 2251 | dc.l 0 2252 | dc.l 0 2253 | dc.l 0 2254 | dc.l 0 2255 | dc.l 0 2256 | dc.l 0 2257 | dc.l 0 2258 | dc.l 0 2259 | dc.l 0 2260 | dc.l 0 2261 | dc.l 0 2262 | dc.l 0 2263 | dc.l 0 2264 | dc.l 0 2265 | dc.l 0 2266 | dc.l 0 2267 | dc.l 0 2268 | dc.l 0 2269 | dc.l 0 2270 | dc.l 0 2271 | dc.l 0 2272 | dc.l 0 2273 | dc.l 0 2274 | dc.l 0 2275 | dc.l 0 2276 | dc.l 0 2277 | dc.l 0 2278 | dc.l 0 2279 | dc.l 0 2280 | dc.l 0 2281 | dc.l 0 2282 | dc.l 0 2283 | dc.l 0 2284 | dc.l 0 2285 | dc.l 0 2286 | dc.l 0 2287 | dc.l 0 2288 | dc.l 0 2289 | dc.l 0 2290 | dc.l 0 2291 | dc.l 0 2292 | dc.l 0 2293 | dc.l 0 2294 | dc.l 0 2295 | dc.l 0 2296 | dc.l 0 2297 | dc.l 0 2298 | dc.l 0 2299 | dc.l 0 2300 | dc.l 0 2301 | dc.l 0 2302 | dc.l 0 2303 | dc.l 0 2304 | dc.l 0 2305 | dc.l 0 2306 | dc.l 0 2307 | dc.l 0 2308 | dc.l 0 2309 | dc.l 0 2310 | dc.l 0 2311 | dc.l 0 2312 | dc.l 0 2313 | dc.l 0 2314 | dc.l 0 2315 | dc.l 0 2316 | dc.l 0 2317 | dc.l 0 2318 | dc.l 0 2319 | dc.l 0 2320 | dc.l 0 2321 | dc.l 0 2322 | dc.l 0 2323 | dc.l 0 2324 | dc.l 0 2325 | dc.l 0 2326 | dc.l 0 2327 | dc.l 0 2328 | dc.l 0 2329 | dc.l 0 2330 | dc.l 0 2331 | dc.l 0 2332 | dc.l 0 2333 | dc.l 0 2334 | dc.l 0 2335 | dc.l 0 2336 | dc.l 0 2337 | dc.l 0 2338 | dc.l 0 2339 | dc.l 0 2340 | dc.l 0 2341 | dc.l 0 2342 | dc.l 0 2343 | dc.l 0 2344 | dc.l 0 2345 | dc.l 0 2346 | dc.w 0 2347 | 2348 | ; Sine data table 2349 | ; Org $52000 2350 | 2351 | sine_data: 2352 | dc.w 0,$C9,$192,$25B,$324,$3ED,$4B5,$57E 2353 | dc.w $646,$70E,$7D6,$89D,$964,$A2B,$AF1,$BB7 2354 | dc.w $C7C,$D41,$E06,$ECA,$F8D,$1050,$1112,$11D3 2355 | dc.w $1294,$1354,$1413,$14D2,$1590,$164C,$1709,$17C4 2356 | dc.w $187E,$1937,$19EF,$1AA7,$1B5D,$1C12,$1CC6,$1D79 2357 | dc.w $1E2B,$1EDC,$1F8C,$203A,$20E7,$2193,$223D,$22E7 2358 | dc.w $238E,$2435,$24DA,$257E,$2620,$26C1,$2760,$27FE 2359 | dc.w $289A,$2935,$29CE,$2A65,$2AFB,$2B8F,$2C21,$2CB2 2360 | dc.w $2D41,$2DCF,$2E5A,$2EE4,$2F6C,$2FF2,$3076,$30F9 2361 | dc.w $3179,$31F8,$3274,$32EF,$3368,$33DF,$3453,$34C6 2362 | dc.w $3537,$35A5,$3612,$367D,$36E5,$374B,$37B0,$3812 2363 | dc.w $3871,$38CF,$392B,$3984,$39DB,$3A30,$3A82,$3AD3 2364 | dc.w $3B21,$3B6D,$3BB6,$3BFD,$3C42,$3C85,$3CC5,$3D03 2365 | dc.w $3D3F,$3D78,$3DAF,$3DE3,$3E15,$3E45,$3E72,$3E9D 2366 | dc.w $3EC5,$3EEB,$3F0F,$3F30,$3F4F,$3F6B,$3F85,$3F9C 2367 | dc.w $3FB1,$3FC4,$3FD4,$3FE1,$3FEC,$3FF5,$3FFB,$3FFF 2368 | cosine_data: 2369 | dc.w $4000,$3FFF,$3FFB,$3FF5,$3FEC,$3FE1,$3FD4,$3FC4 2370 | dc.w $3FB1,$3F9C,$3F85,$3F6B,$3F4F,$3F30,$3F0F,$3EEB 2371 | dc.w $3EC5,$3E9D,$3E72,$3E45,$3E15,$3DE3,$3DAF,$3D78 2372 | dc.w $3D3F,$3D03,$3CC5,$3C85,$3C42,$3BFD,$3BB6,$3B6D 2373 | dc.w $3B21,$3AD3,$3A82,$3A30,$39DB,$3984,$392B,$38CF 2374 | dc.w $3871,$3812,$37B0,$374B,$36E5,$367D,$3612,$35A5 2375 | dc.w $3537,$34C6,$3453,$33DF,$3368,$32EF,$3274,$31F8 2376 | dc.w $3179,$30F9,$3076,$2FF2,$2F6C,$2EE4,$2E5A,$2DCF 2377 | dc.w $2D41,$2CB2,$2C21,$2B8F,$2AFB,$2A65,$29CE,$2935 2378 | dc.w $289A,$27FE,$2760,$26C1,$2620,$257E,$24DA,$2435 2379 | dc.w $238E,$22E7,$223D,$2193,$20E7,$203A,$1F8C,$1EDC 2380 | dc.w $1E2B,$1D79,$1CC6,$1C12,$1B5D,$1AA7,$19EF,$1937 2381 | dc.w $187E,$17C4,$1709,$164C,$1590,$14D2,$1413,$1354 2382 | dc.w $1294,$11D3,$1112,$1050,$F8D,$ECA,$E06,$D41 2383 | dc.w $C7C,$BB7,$AF1,$A2B,$964,$89D,$7D6,$70E 2384 | dc.w $646,$57E,$4B5,$3ED,$324,$25B,$192,$C9 2385 | dc.w 0,$FF37,$FE6E,$FDA5,$FCDC,$FC13,$FB4B,$FA82 2386 | dc.w $F9BA,$F8F2,$F82A,$F763,$F69C,$F5D5,$F50F,$F449 2387 | dc.w $F384,$F2BF,$F1FA,$F136,$F073,$EFB0,$EEEE,$EE2D 2388 | dc.w $ED6C,$ECAC,$EBED,$EB2E,$EA70,$E9B4,$E8F7,$E83C 2389 | dc.w $E782,$E6C9,$E611,$E559,$E4A3,$E3EE,$E33A,$E287 2390 | dc.w $E1D5,$E124,$E074,$DFC6,$DF19,$DE6D,$DDC3,$DD19 2391 | dc.w $DC72,$DBCB,$DB26,$DA82,$D9E0,$D93F,$D8A0,$D802 2392 | dc.w $D766,$D6CB,$D632,$D59B,$D505,$D471,$D3DF,$D34E 2393 | dc.w $D2BF,$D231,$D1A6,$D11C,$D094,$D00E,$CF8A,$CF07 2394 | dc.w $CE87,$CE08,$CD8C,$CD11,$CC98,$CC21,$CBAD,$CB3A 2395 | dc.w $CAC9,$CA5B,$C9EE,$C983,$C91B,$C8B5,$C850,$C7EE 2396 | dc.w $C78F,$C731,$C6D5,$C67C,$C625,$C5D0,$C57E,$C52D 2397 | dc.w $C4DF,$C493,$C44A,$C403,$C3BE,$C37B,$C33B,$C2FD 2398 | dc.w $C2C1,$C288,$C251,$C21D,$C1EB,$C1BB,$C18E,$C163 2399 | dc.w $C13B,$C115,$C0F1,$C0D0,$C0B1,$C095,$C07B,$C064 2400 | dc.w $C04F,$C03C,$C02C,$C01F,$C014,$C00B,$C005,$C001 2401 | dc.w $C000,$C001,$C005,$C00B,$C014,$C01F,$C02C,$C03C 2402 | dc.w $C04F,$C064,$C07B,$C095,$C0B1,$C0D0,$C0F1,$C115 2403 | dc.w $C13B,$C163,$C18E,$C1BB,$C1EB,$C21D,$C251,$C288 2404 | dc.w $C2C1,$C2FD,$C33B,$C37B,$C3BE,$C403,$C44A,$C493 2405 | dc.w $C4DF,$C52D,$C57E,$C5D0,$C625,$C67C,$C6D5,$C731 2406 | dc.w $C78F,$C7EE,$C850,$C8B5,$C91B,$C983,$C9EE,$CA5B 2407 | dc.w $CAC9,$CB3A,$CBAD,$CC21,$CC98,$CD11,$CD8C,$CE08 2408 | dc.w $CE87,$CF07,$CF8A,$D00E,$D094,$D11C,$D1A6,$D231 2409 | dc.w $D2BF,$D34E,$D3DF,$D471,$D505,$D59B,$D632,$D6CB 2410 | dc.w $D766,$D802,$D8A0,$D93F,$D9E0,$DA82,$DB26,$DBCB 2411 | dc.w $DC72,$DD19,$DDC3,$DE6D,$DF19,$DFC6,$E074,$E124 2412 | dc.w $E1D5,$E287,$E33A,$E3EE,$E4A3,$E559,$E611,$E6C9 2413 | dc.w $E782,$E83C,$E8F7,$E9B4,$EA70,$EB2E,$EBED,$ECAC 2414 | dc.w $ED6C,$EE2D,$EEEE,$EFB0,$F073,$F136,$F1FA,$F2BF 2415 | dc.w $F384,$F449,$F50F,$F5D5,$F69C,$F763,$F82A,$F8F2 2416 | dc.w $F9BA,$FA82,$FB4B,$FC13,$FCDC,$FDA5,$FE6E,$FF37 2417 | dc.w 0,$C9,$192,$25B,$324,$3ED,$4B5,$57E 2418 | dc.w $646,$70E,$7D6,$89D,$964,$A2B,$AF1,$BB7 2419 | dc.w $C7C,$D41,$E06,$ECA,$F8D,$1050,$1112,$11D3 2420 | dc.w $1294,$1354,$1413,$14D2,$1590,$164C,$1709,$17C4 2421 | dc.w $187E,$1937,$19EF,$1AA7,$1B5D,$1C12,$1CC6,$1D79 2422 | dc.w $1E2B,$1EDC,$1F8C,$203A,$20E7,$2193,$223D,$22E7 2423 | dc.w $238E,$2435,$24DA,$257E,$2620,$26C1,$2760,$27FE 2424 | dc.w $289A,$2935,$29CE,$2A65,$2AFB,$2B8F,$2C21,$2CB2 2425 | dc.w $2D41,$2DCF,$2E5A,$2EE4,$2F6C,$2FF2,$3076,$30F9 2426 | dc.w $3179,$31F8,$3274,$32EF,$3368,$33DF,$3453,$34C6 2427 | dc.w $3537,$35A5,$3612,$367D,$36E5,$374B,$37B0,$3812 2428 | dc.w $3871,$38CF,$392B,$3984,$39DB,$3A30,$3A82,$3AD3 2429 | dc.w $3B21,$3B6D,$3BB6,$3BFD,$3C42,$3C85,$3CC5,$3D03 2430 | dc.w $3D3F,$3D78,$3DAF,$3DE3,$3E15,$3E45,$3E72,$3E9D 2431 | dc.w $3EC5,$3EEB,$3F0F,$3F30,$3F4F,$3F6B,$3F85,$3F9C 2432 | dc.w $3FB1,$3FC4,$3FD4,$3FE1,$3FEC,$3FF5,$3FFB,$3FFF 2433 | dc.w $4000 2434 | 2435 | ds.w 1407 2436 | 2437 | ; Font data for scroller 2438 | ; Org $53000 2439 | ; 1 bitplane, 320x16 2440 | 2441 | fontdata: 2442 | dc.w 0 2443 | dc.w 0 2444 | dc.w 0 2445 | dc.w 0 2446 | dc.w 0 2447 | dc.w 0 2448 | dc.w 0 2449 | dc.w 0 2450 | dc.w 0 2451 | dc.w 0 2452 | dc.w 0 2453 | dc.w 0 2454 | dc.w 0 2455 | dc.w 0 2456 | dc.w 0 2457 | dc.w 0 2458 | dc.w 0 2459 | dc.w 0 2460 | dc.w 0 2461 | dc.w 0 2462 | dc.w $73C 2463 | dc.w $1C78 2464 | dc.w $1C1E 2465 | dc.w $1C1B 2466 | dc.w $187E 2467 | dc.w $3330 2468 | dc.w $6367 2469 | dc.w $1C3C 2470 | dc.w $1C3C 2471 | dc.w $3C7E 2472 | dc.w $3363 2473 | dc.w $3373 2474 | dc.w $733F 2475 | dc.w 0 2476 | dc.w $60 2477 | dc.w $1C1E 2478 | dc.w $1C1C 2479 | dc.w $300 2480 | dc.w 0 2481 | dc.w 0 2482 | dc.w $F76 2483 | dc.w $366C 2484 | dc.w $3633 2485 | dc.w $361B 2486 | dc.w $1867 2487 | dc.w $7670 2488 | dc.w $7773 2489 | dc.w $3676 2490 | dc.w $3676 2491 | dc.w $7677 2492 | dc.w $7363 2493 | dc.w $3366 2494 | dc.w $6676 2495 | dc.w 0 2496 | dc.w $60 2497 | dc.w $1837 2498 | dc.w $3006 2499 | dc.w $600 2500 | dc.w 0 2501 | dc.w 0 2502 | dc.w $1B63 2503 | dc.w $6066 2504 | dc.w $6060 2505 | dc.w $6033 2506 | dc.w $1803 2507 | dc.w $6C60 2508 | dc.w $7F7B 2509 | dc.w $6363 2510 | dc.w $6363 2511 | dc.w $6010 2512 | dc.w $6336 2513 | dc.w $636C 2514 | dc.w $6C0C 2515 | dc.w 0 2516 | dc.w $40 2517 | dc.w $1803 2518 | dc.w $6003 2519 | dc.w $C00 2520 | dc.w 0 2521 | dc.w 0 2522 | dc.w $3F7E 2523 | dc.w $6063 2524 | dc.w $7878 2525 | dc.w $6E3F 2526 | dc.w $1803 2527 | dc.w $7860 2528 | dc.w $6B7E 2529 | dc.w $637E 2530 | dc.w $6F7E 2531 | dc.w $3E18 2532 | dc.w $6336 2533 | dc.w $6B38 2534 | dc.w $3818 2535 | dc.w 0 2536 | dc.w 0 2537 | dc.w $101E 2538 | dc.w $6003 2539 | dc.w $1800 2540 | dc.w 0 2541 | dc.w 0 2542 | dc.w $3363 2543 | dc.w $7073 2544 | dc.w $6060 2545 | dc.w $6363 2546 | dc.w $1807 2547 | dc.w $7C70 2548 | dc.w $636E 2549 | dc.w $7360 2550 | dc.w $776C 2551 | dc.w $4318 2552 | dc.w $7336 2553 | dc.w $7F1C 2554 | dc.w $1830 2555 | dc.w 0 2556 | dc.w $6000 2557 | dc.w $1000 2558 | dc.w $6003 2559 | dc.w $1800 2560 | dc.w 0 2561 | dc.w 0 2562 | dc.w $6373 2563 | dc.w $7173 2564 | dc.w $7170 2565 | dc.w $7363 2566 | dc.w $1C67 2567 | dc.w $7673 2568 | dc.w $6667 2569 | dc.w $7370 2570 | dc.w $7376 2571 | dc.w $7B1C 2572 | dc.w $731C 2573 | dc.w $7736 2574 | dc.w $1867 2575 | dc.w $60 2576 | dc.w $6000 2577 | dc.w $2018 2578 | dc.w $7007 2579 | dc.w $3000 2580 | dc.w 0 2581 | dc.w 0 2582 | dc.w $633F 2583 | dc.w $3F7E 2584 | dc.w $3F38 2585 | dc.w $3F63 2586 | dc.w $E3E 2587 | dc.w $333F 2588 | dc.w $6663 2589 | dc.w $3F38 2590 | dc.w $3F33 2591 | dc.w $7E1C 2592 | dc.w $3F1C 2593 | dc.w $6363 2594 | dc.w $387F 2595 | dc.w $60 2596 | dc.w $2000 2597 | dc.w $3018 2598 | dc.w $3C1E 2599 | dc.w $6000 2600 | dc.w 0 2601 | dc.w 0 2602 | dc.w 0 2603 | dc.w 0 2604 | dc.w 0 2605 | dc.w 0 2606 | dc.w 0 2607 | dc.w 0 2608 | dc.w 0 2609 | dc.w 0 2610 | dc.w 0 2611 | dc.w 0 2612 | dc.w 0 2613 | dc.w 0 2614 | dc.w 0 2615 | dc.w 0 2616 | dc.w 0 2617 | dc.w 0 2618 | dc.w 0 2619 | dc.w 0 2620 | dc.w 0 2621 | dc.w 0 2622 | dc.w $101E 2623 | dc.w $3E1B 2624 | dc.w $3C1C 2625 | dc.w $3C1C 2626 | dc.w $1E1C 2627 | dc.w 0 2628 | dc.w 0 2629 | dc.w 0 2630 | dc.w 0 2631 | dc.w 0 2632 | dc.w 0 2633 | dc.w 0 2634 | dc.w 0 2635 | dc.w 0 2636 | dc.w 0 2637 | dc.w 0 2638 | dc.w 0 2639 | dc.w 0 2640 | dc.w 0 2641 | dc.w 0 2642 | dc.w $1037 2643 | dc.w $671B 2644 | dc.w $6636 2645 | dc.w $6636 2646 | dc.w $3736 2647 | dc.w 0 2648 | dc.w 0 2649 | dc.w 0 2650 | dc.w 0 2651 | dc.w 0 2652 | dc.w 0 2653 | dc.w 0 2654 | dc.w 0 2655 | dc.w 0 2656 | dc.w 0 2657 | dc.w 0 2658 | dc.w 0 2659 | dc.w 0 2660 | dc.w 0 2661 | dc.w 0 2662 | dc.w $1803 2663 | dc.w $4333 2664 | dc.w $6060 2665 | dc.w $363 2666 | dc.w $6363 2667 | dc.w 0 2668 | dc.w 0 2669 | dc.w 0 2670 | dc.w 0 2671 | dc.w 0 2672 | dc.w 0 2673 | dc.w 0 2674 | dc.w 0 2675 | dc.w 0 2676 | dc.w 0 2677 | dc.w 0 2678 | dc.w 0 2679 | dc.w 0 2680 | dc.w 0 2681 | dc.w 0 2682 | dc.w $183E 2683 | dc.w $F3F 2684 | dc.w $7E7E 2685 | dc.w $F3E 2686 | dc.w $3F6B 2687 | dc.w 0 2688 | dc.w 0 2689 | dc.w 0 2690 | dc.w 0 2691 | dc.w 0 2692 | dc.w 0 2693 | dc.w 0 2694 | dc.w 0 2695 | dc.w 0 2696 | dc.w 0 2697 | dc.w 0 2698 | dc.w 0 2699 | dc.w 0 2700 | dc.w 0 2701 | dc.w 0 2702 | dc.w $1C61 2703 | dc.w $303 2704 | dc.w $363 2705 | dc.w $363 2706 | dc.w $36B 2707 | dc.w 0 2708 | dc.w 0 2709 | dc.w 0 2710 | dc.w 0 2711 | dc.w 0 2712 | dc.w 0 2713 | dc.w 0 2714 | dc.w 0 2715 | dc.w 0 2716 | dc.w 0 2717 | dc.w 0 2718 | dc.w 0 2719 | dc.w 0 2720 | dc.w 0 2721 | dc.w 0 2722 | dc.w $1C6F 2723 | dc.w $6703 2724 | dc.w $7B73 2725 | dc.w $773 2726 | dc.w $6763 2727 | dc.w 0 2728 | dc.w 0 2729 | dc.w 0 2730 | dc.w 0 2731 | dc.w 0 2732 | dc.w 0 2733 | dc.w 0 2734 | dc.w 0 2735 | dc.w 0 2736 | dc.w 0 2737 | dc.w 0 2738 | dc.w 0 2739 | dc.w 0 2740 | dc.w 0 2741 | dc.w 0 2742 | dc.w $1C7F 2743 | dc.w $7E03 2744 | dc.w $7F3E 2745 | dc.w $E3E 2746 | dc.w $7E3E 2747 | dc.w 0 2748 | dc.w 0 2749 | 2750 | ; Electronic Artists logo 2751 | ; 1 bitplane 320x? 2752 | ea_logo: 2753 | dc.w 0 2754 | dc.w 0 2755 | dc.w 0 2756 | dc.w 0 2757 | dc.w 0 2758 | dc.w 0 2759 | dc.w 0 2760 | dc.w 0 2761 | dc.w 0 2762 | dc.w 0 2763 | dc.w 0 2764 | dc.w 0 2765 | dc.w 0 2766 | dc.w $FB0F 2767 | dc.w $9DE7 2768 | dc.w $8E79 2769 | dc.w $E703 2770 | dc.w $9EF3 2771 | dc.w $CF78 2772 | dc.w $F000 2773 | dc.w 0 2774 | dc.w 0 2775 | dc.w 0 2776 | dc.w 0 2777 | dc.w 0 2778 | dc.w 0 2779 | dc.w 0 2780 | dc.w 0 2781 | dc.w 0 2782 | dc.w 0 2783 | dc.w 0 2784 | dc.w 0 2785 | dc.w 0 2786 | dc.w 0 2787 | dc.w $600 2788 | dc.w $C30C 2789 | dc.w $180 2790 | dc.w $C300 2791 | dc.w $1801 2792 | dc.w $8000 2793 | dc.w 0 2794 | dc.w 0 2795 | dc.w 0 2796 | dc.w 0 2797 | dc.w 0 2798 | dc.w 0 2799 | dc.w 0 2800 | dc.w 0 2801 | dc.w 0 2802 | dc.w 0 2803 | dc.w 0 2804 | dc.w 0 2805 | dc.w 0 2806 | dc.w $E30E 2807 | dc.w $3037 2808 | dc.w $9B6C 2809 | dc.w $CC07 2810 | dc.w $DE19 2811 | dc.w $8E0C 2812 | dc.w $E000 2813 | dc.w 0 2814 | dc.w 0 2815 | dc.w 0 2816 | dc.w 0 2817 | dc.w 0 2818 | dc.w 0 2819 | dc.w 0 2820 | dc.w 0 2821 | dc.w 0 2822 | dc.w 0 2823 | dc.w 0 2824 | dc.w 0 2825 | dc.w 0 2826 | dc.w $C30C 2827 | dc.w $3636 2828 | dc.w $DB6C 2829 | dc.w $CD86 2830 | dc.w $DB19 2831 | dc.w $830C 2832 | dc.w $3000 2833 | dc.w 0 2834 | dc.w 0 2835 | dc.w 0 2836 | dc.w 0 2837 | dc.w 0 2838 | dc.w 0 2839 | dc.w 0 2840 | dc.w 0 2841 | dc.w 0 2842 | dc.w 0 2843 | dc.w 0 2844 | dc.w 0 2845 | dc.w 0 2846 | dc.w $FBEF 2847 | dc.w $9C36 2848 | dc.w $CE6D 2849 | dc.w $E706 2850 | dc.w $DB1B 2851 | dc.w $DE0D 2852 | dc.w $E000 2853 | 2854 | ; Unused data follows 2855 | dc.w 0 2856 | dc.w 0 2857 | dc.w 0 2858 | dc.w 0 2859 | dc.w 0 2860 | dc.w 0 2861 | dc.w 0 2862 | dc.w 0 2863 | dc.w 0 2864 | dc.w 0 2865 | dc.w 0 2866 | dc.w 0 2867 | dc.w 0 2868 | dc.w 0 2869 | ; Coder's group signature? 2870 | dc.w $ECA 2871 | 2872 | ; Main entry point. Originally located at $5334c 2873 | 2874 | main: 2875 | ; Clear area from $60000 to $6FFFF 2876 | LEA stars_bpl1,A0 2877 | MOVE.L #$8000,D0 ;Unnecessary 2878 | MOVE.L #$FFFF,D0 2879 | .loop: 2880 | CLR.B (A0)+ 2881 | DBRA D0,.loop 2882 | MOVE.W #$83C0,$DFF096 2883 | MOVE.L #mainprg,$80 2884 | TRAP #0 2885 | CLR.L D0 2886 | RTS 2887 | 2888 | mainprg: 2889 | MOVE.W #$4000,$DFF09A 2890 | MOVE.L #copper_list,$DFF080 ;COP1LCH 2891 | CLR.W $DFF088 ;COPJMP1 2892 | MOVE.W #$0020,$DFF096 ;DMACON 2893 | mainloop: 2894 | MOVE.L $DFF004,D0 ;VPOSR 2895 | ASR.L #8,D0 2896 | CMPI.W #$101,D0 2897 | BNE.S mainloop 2898 | 2899 | MOVEM.L D0-D7/A0-A6,-(SP) 2900 | BSR clearplane 2901 | BSR calc_vect 2902 | BSR do_proj 2903 | BSR draw_lines 2904 | MOVEM.L (SP)+,D0-D7/A0-A6 2905 | JSR music_tick 2906 | BSR scroll_text 2907 | BSR do_stars 2908 | BTST #6,$BFE001 2909 | BNE.S mainloop 2910 | 2911 | BSR sound_off 2912 | 2913 | MOVE.W #$C000,$DFF09A ;INTENA 2914 | MOVE.W #$8020,$DFF096 ;DMACON 2915 | ; Restore copper list. This makes assumptions about the position 2916 | ; of graphics.library in the list of libraries, which is bad. 2917 | MOVE.L 4,A6 2918 | MOVE.L (A6),A6 2919 | MOVE.L (A6),A6 2920 | MOVE.L $26(A6),$DFF080 ;COP1LCH 2921 | CLR.W $DFF088 ;COPJMP1 2922 | RTE 2923 | 2924 | sound_off: 2925 | CLR.W $DFF0A8 2926 | CLR.W $DFF0B8 2927 | CLR.W $DFF0C8 2928 | CLR.W $DFF0D8 2929 | MOVE.W #15,$DFF096 2930 | RTS 2931 | 2932 | scroll_text: 2933 | MOVE.L #$E000E,$DFF064 ;BLTAMOD/BLTDMOD 2934 | MOVE.L #text_bpl+2,$DFF050 ;BLTAPTR 2935 | MOVE.L #text_bpl,$DFF054 ;BLTDPTR 2936 | MOVE.L #$F9F00000,$DFF040 ;BLTCON0/BLTCON1 2937 | MOVE.W #$217,$DFF058 ;BLTSIZE 2938 | .waitblit: 2939 | BTST #14,$DFF002 ;DMACONR, #14 is allowed, but should be 6 2940 | BNE.S .waitblit 2941 | ADD.B #1,scrollbitcnt 2942 | CMPI.B #8,scrollbitcnt 2943 | BNE scroll_done 2944 | CLR.W scrollbitcnt 2945 | scroll_nextchar: 2946 | CLR.L D0 2947 | MOVE.L scrollpointer,A0 2948 | MOVE.B (A0)+,D0 2949 | ADD.L #1,scrollpointer 2950 | TST.B D0 2951 | BNE scrollnotend 2952 | MOVE.L #scrolltext,scrollpointer 2953 | BRA scroll_nextchar 2954 | 2955 | scrollnotend: 2956 | SUBI.W #$20,D0 2957 | LSL.W #1,D0 2958 | LEA fontoffsets,A0 2959 | MOVE.L #0,A5 2960 | MOVE.W (A0,D0.W),A5 2961 | ADDA.L #fontdata,A5 2962 | ;text bitplane is displayed at +2 2963 | ;new character is copied to additional +2 bytes outside of view 2964 | LEA text_bpl+44,A6 2965 | MOVE.B 40(A5),(A6) 2966 | MOVE.B 80(A5),60(A6) 2967 | MOVE.B 120(A5),120(A6) 2968 | MOVE.B 160(A5),180(A6) 2969 | MOVE.B 200(A5),240(A6) 2970 | MOVE.B 240(A5),300(A6) 2971 | MOVE.B 280(A5),360(A6) 2972 | scroll_done: 2973 | RTS 2974 | 2975 | scrollpointer: 2976 | dc.l scrolltext 2977 | 2978 | scrolltext: 2979 | dc.b ' THE LATEST CRACK FROM PARANOIMIA IS CALLED ' 2980 | dc.b ' BEACH VOLLEY !!!!! THIS MAGIC IS DEDICATED' 2981 | dc.b ' TO JIMMY JAMES AND TERRI LEWIS OF FLYTE TIM' 2982 | dc.b 'E PRODUCTIONS. WHAT THEY DID HAS ALWAYS BEEN' 2983 | dc.b ' EXTRAORDINARY AND FANTASTIC: NOW LET''S SPE' 2984 | dc.b 'ND SOME TIME ON THE TOTAL OPPOSITE : KOTEX. ' 2985 | dc.b 'A GROUP FULL OF LAMERS AND THEIR BOSS A PSEU' 2986 | dc.b 'DO - CRACKER, WHO IS THE MOST UGLY LOOKING G' 2987 | dc.b 'UY IN THE WORLD OF PIRACY. WHE HAS ONE ESSEN' 2988 | dc.b 'TIALL TIP FOR HIM : TO IMPROVE YOUR IMAGE A ' 2989 | dc.b 'LITTLE BIT YOU SHOULD START USING SHAMPOO TO' 2990 | dc.b ' WASH YOUR HAIR. THATS ENOUGH ABOUT QUARTEX ' 2991 | dc.b 'FOR TODAY ',0,0 2992 | dc.b 0 2993 | dc.b 0 2994 | dc.b ' ' 2995 | dc.b ' ............' 2996 | dc.b '.....''',0,0 2997 | 2998 | EVEN 2999 | 3000 | ; Offset of the character data in the font bitmap (320x15 pixels). 3001 | ; Starts with character 32 (space). 3002 | fontoffsets: 3003 | dc.w $14B 3004 | dc.w $1E 3005 | dc.w 0 3006 | dc.w 0 3007 | dc.w 0 3008 | dc.w 0 3009 | dc.w 0 3010 | dc.w $1D 3011 | dc.w $20 3012 | dc.w $21 3013 | dc.w 0 3014 | dc.w 0 3015 | dc.w $1C 3016 | dc.w 0 3017 | dc.w $1B 3018 | dc.w $22 3019 | dc.w $149 3020 | dc.w $140 3021 | dc.w $141 3022 | dc.w $142 3023 | dc.w $143 3024 | dc.w $144 3025 | dc.w $145 3026 | dc.w $146 3027 | dc.w $147 3028 | dc.w $148 3029 | dc.w 0 3030 | dc.w 0 3031 | dc.w 0 3032 | dc.w 0 3033 | dc.w 0 3034 | dc.w $1F 3035 | dc.w 0 3036 | dc.w 0 3037 | dc.w 1 3038 | dc.w 2 3039 | dc.w 3 3040 | dc.w 4 3041 | dc.w 5 3042 | dc.w 6 3043 | dc.w 7 3044 | dc.w 8 3045 | dc.w 9 3046 | dc.w 10 3047 | dc.w 11 3048 | dc.w 12 3049 | dc.w 13 3050 | dc.w 14 3051 | dc.w 15 3052 | dc.w $10 3053 | dc.w $11 3054 | dc.w $12 3055 | dc.w $13 3056 | dc.w $14 3057 | dc.w $15 3058 | dc.w $16 3059 | dc.w $17 3060 | dc.w $18 3061 | dc.w $19 3062 | 3063 | do_stars: 3064 | MOVEM.L D0-D7/A0-A6,-(SP) 3065 | 3066 | ; starpostab stores (x,y,z) for each star in words 3067 | LEA starpostab,A4 3068 | 3069 | MOVE.L #num_stars-1,D3 3070 | 3071 | ; starrestoretab stores (star offset in bpl,bit number) in words 3072 | LEA starrestoretab,A5 3073 | starloop: 3074 | MOVE.W (A4)+,D4 ;x-pos 3075 | MOVE.W (A4)+,D5 ;y-pos 3076 | MOVE.W (A4),D6 ;z-pos 3077 | SUBQ.W #6,(A4)+ ;decr z-pos 3078 | TST.W D6 3079 | BLE reinit_starpos 3080 | EXT.L D4 3081 | EXT.L D5 3082 | DIVS.W D6,D4 3083 | DIVS.W D6,D5 3084 | ADD.W #160,D4 3085 | ADD.W #128,D5 3086 | TST.W D4 3087 | BLT reinit_starpos 3088 | TST.W D5 3089 | BLT reinit_starpos 3090 | CMPI.W #319,D4 3091 | BGT reinit_starpos 3092 | CMPI.W #255,D5 3093 | BGT reinit_starpos 3094 | MULU.W #40,D5 3095 | MOVE.W D4,D7 3096 | LSR.W #3,D4 3097 | ADD.W D4,D5 3098 | NOT.B D7 3099 | MOVE.W (A5),D0 3100 | MOVE.W D5,(A5)+ 3101 | MOVE.W (A5),D1 3102 | MOVE.W D7,(A5)+ 3103 | LEA stars_bpl1,A1 3104 | BCLR D1,(A1,D0.W) 3105 | ADD.L #stars_bpl2-stars_bpl1,D0 3106 | BCLR D1,(A1,D0.W) 3107 | CMPI.W #400,D6 3108 | BGT.S star_depth1 3109 | CMPI.W #300,D6 3110 | BGT.S star_depth2 3111 | BSET D7,(A1,D5.L) 3112 | ADD.L #stars_bpl2-stars_bpl1,D5 3113 | BSET D7,(A1,D5.L) 3114 | nextstar: 3115 | DBRA D3,starloop 3116 | MOVE.W (A5)+,D0 3117 | MOVE.W (A5),D1 3118 | ; Clear the last star. This is probably wrong because it reads over 3119 | ; end of table. 3120 | LEA stars_bpl1,A1 3121 | BCLR D1,(A1,D0.W) 3122 | ADD.L #stars_bpl2-stars_bpl1,D0 3123 | BCLR D1,(A1,D0.W) 3124 | 3125 | MOVEM.L (SP)+,D0-D7/A0-A6 3126 | RTS 3127 | 3128 | ; Pseudo random number generator. Depends on HPOS, which makes it 3129 | ; unfit for faster processors, resulting in equal values. 3130 | 3131 | update_starrnd: 3132 | MOVE.W $DFF006,D0 3133 | LEA prnd_value,A3 3134 | MULS.W (A3),D0 3135 | ADD.W #4681,D0 3136 | MOVE.W D0,(A3) 3137 | RTS 3138 | 3139 | reinit_starpos: 3140 | BSR.S update_starrnd 3141 | MOVE.W D0,-6(A4) 3142 | BSR.S update_starrnd 3143 | MOVE.W D0,-4(A4) 3144 | MOVE.W #$300,-2(A4) 3145 | BRA nextstar 3146 | 3147 | star_depth2: 3148 | LEA stars_bpl2,A1 3149 | star_depth1: 3150 | BSET D7,(A1,D5.L) 3151 | BRA nextstar 3152 | 3153 | copper_list: 3154 | dc.w $0092,$0038 ;DDFSTRT 3155 | dc.w $0094,$00D0 ;DDFSTOP 3156 | dc.w $008E,$2041 ;DIWSTRT V=32,H=65 ($2041) 3157 | ;following value seems wrong. $15FF works 3158 | dc.w $0090,$35FF ;DIWSTOP V=53,H=255 ($35FF) 3159 | 3160 | dc.w $2001,$FFFE 3161 | 3162 | ;Note: $E0/E2 and $E8/EA are not reset here. Can result in 3163 | ;garbage from vector bitplane above text scroller when running. 3164 | 3165 | ;Syntax for low word/high word works this way in ASM-One and Asm-Pro 3166 | ;Normally the bitplane pointers are set in the code, but this binary 3167 | ;already had the pointers initialized so has been reconstructed as-is. 3168 | 3169 | dc.w $00E4,stars_bpl1>>16 ;BPL2PTH stars bitplane A 3170 | dc.w $00E6,(stars_bpl1<<16)>>16 3171 | dc.w $00EC,stars_bpl2>>16 ;BPL4PTH stars bitplane B 3172 | dc.w $00EE,(stars_bpl2<<16)>>16 3173 | dc.w $0186,$0FFF ;COLOR03 3174 | 3175 | dc.w $3207,$FFFE 3176 | dc.w $0180,$000A ;COLOR00 3177 | 3178 | dc.w $3307,$FFFE 3179 | dc.w $0180,$000C ;COLOR00 3180 | 3181 | dc.w $3507,$FFFE 3182 | dc.w $00E0,text_bpl>>16 ;BPL1PTH text bitplane 3183 | dc.w $00E2,((text_bpl+2)<<16)>>16 3184 | dc.w $00E8,text_bpl>>16 ;BPL3PTH text bitplane 3185 | dc.w $00EA,((text_bpl+2)<<16)>>16 3186 | dc.w $0108,$0014 ;BPL1MOD 3187 | 3188 | dc.w $3E07,$FFFE 3189 | dc.w $0180,$000A ;COLOR00 3190 | 3191 | dc.w $3F07,$FFFE 3192 | dc.w $0180,$0000 ;COLOR00 3193 | 3194 | dc.w $4007,$FFFE 3195 | dc.w $00E0,vector_bpl>>16 ;BPL1PTH vector bitplane 3196 | dc.w $00E2,(vector_bpl<<16)>>16 3197 | dc.w $00E8,vector_bpl>>16 ;BPL3PTH vector bitplane 3198 | dc.w $00EA,(vector_bpl<<16)>>16 3199 | dc.w $0108,$0000 ;BPL1MOD 3200 | dc.w $0192,$0777 ;COLOR09 3201 | dc.w $0194,$0BBB ;COLOR10 3202 | dc.w $0196,$0FFF ;COLOR11 3203 | 3204 | dc.w $EA07,$FFFE 3205 | dc.w $00E0,ea_logo>>16 ;BPL1PTH credits logo 3206 | dc.w $00E2,(ea_logo<<16)>>16 3207 | dc.w $00E8,ea_logo>>16 ;BPL3PTH credits logo 3208 | dc.w $00EA,(ea_logo<<16)>>16 3209 | dc.w $0108,$0000 ;BPL1MOD 3210 | 3211 | dc.w $EF07,$FFFE 3212 | dc.w $0186,$0000 ;COLOR03 3213 | dc.w $0100,$4600 ;BPLCON0 3214 | dc.w $010A,$0000 ;BPL2MOD - unneeded 3215 | 3216 | dc.w $F207,$FFFE 3217 | dc.w $0180,$000A ;COLOR00 3218 | dc.w $0186,$000A ;COLOR03 3219 | 3220 | dc.w $F307,$FFFE 3221 | dc.w $0180,$000C ;COLOR00 3222 | dc.w $0186,$000C ;COLOR03 3223 | 3224 | dc.w $F507,$FFFE 3225 | dc.w $00E0,text_bpl>>16 ;text bitplane 3226 | dc.w $00E2,((text_bpl+2)<<16)>>16 3227 | dc.w $0186,$0FFF ;COLOR03 3228 | dc.w $00E8,text_bpl>>16 ;text bitplane 3229 | dc.w $00EA,((text_bpl+2)<<16)>>16 3230 | dc.w $0108,$0014 ;BPL1MOD 3231 | 3232 | dc.w $FE07,$FFFE 3233 | dc.w $0180,$000A ;COLOR00 3234 | 3235 | dc.w $FF07,$FFFE 3236 | dc.w $0180,$0000 ;COLOR00 3237 | 3238 | dc.w $FFFF,$FFFE 3239 | 3240 | prnd_value: dc.w 0 3241 | 3242 | scrollbitcnt: dc.b 0 3243 | 3244 | even 3245 | 3246 | calc_vect: 3247 | ADD.W #3,rot_a ;rotate around x-axis 3248 | ANDI.W #$1FF,rot_a 3249 | ADD.W #4,rot_b ;rotate around y-axis 3250 | ANDI.W #$1FF,rot_b 3251 | BSR init_rot 3252 | BSR calc_rot_b 3253 | BSR calc_rot_a 3254 | BSR calc_points 3255 | RTS 3256 | 3257 | ;Clear the vector bitplane with the Blitter 3258 | clearplane: 3259 | MOVE.L #$1000000,$DFF040 ;BLTCON0/1 3260 | MOVE.L #vector_buffer,$DFF054 ;BLTDPTR 3261 | MOVE.W #0,$DFF066 ;BLTDMOD 3262 | MOVE.W #$3A14,$DFF058 ;BLTSIZE 3263 | RTS 3264 | 3265 | draw_line: 3266 | MOVEM.L D0-D7/A0-A6,-(SP) ;Excessive 3267 | MOVE.W D2,D0 3268 | MOVE.W D3,D1 3269 | MOVE.W A2,D2 3270 | MOVE.W A3,D3 3271 | MOVE.L #vector_buffer,A0 3272 | SUB.W D1,D3 3273 | BPL.S lbC003152 3274 | NEG.W D3 3275 | SUB.W D0,D2 3276 | BPL.S lbC003160 3277 | NEG.W D2 3278 | CMP.W D3,D2 3279 | BPL.S lbC003170 3280 | MOVEQ #13,D4 3281 | BRA.S lbC003180 3282 | 3283 | lbC003152: 3284 | SUB.W D0,D2 3285 | BPL.S lbC003168 3286 | NEG.W D2 3287 | CMP.W D3,D2 3288 | BPL.S lbC003174 3289 | MOVEQ #9,D4 3290 | BRA.S lbC003180 3291 | 3292 | lbC003160: 3293 | CMP.W D3,D2 3294 | BPL.S lbC00317C 3295 | MOVEQ #5,D4 3296 | BRA.S lbC003180 3297 | 3298 | lbC003168: 3299 | CMP.W D3,D2 3300 | BPL.S lbC003178 3301 | MOVEQ #1,D4 3302 | BRA.S lbC003180 3303 | 3304 | lbC003170: 3305 | MOVEQ #29,D4 3306 | BRA.S lbC003182 3307 | 3308 | lbC003174: 3309 | MOVEQ #21,D4 3310 | BRA.S lbC003182 3311 | 3312 | lbC003178: 3313 | MOVEQ #17,D4 3314 | BRA.S lbC003182 3315 | 3316 | lbC00317C: 3317 | MOVEQ #25,D4 3318 | BRA.S lbC003182 3319 | 3320 | lbC003180: 3321 | EXG D3,D2 3322 | lbC003182: 3323 | MOVE.W D2,D5 3324 | ADDQ.W #1,D5 3325 | ASL.W #6,D5 3326 | ADDQ.W #2,D5 3327 | MOVE.W D0,D6 3328 | LSR.W #3,D0 3329 | MULU.W #40,D1 3330 | ADD.W D1,D0 3331 | ADDA.W D0,A0 3332 | ADD.W D3,D3 3333 | MOVE.W D3,D7 3334 | CMP.W D2,D7 3335 | BPL.S lbC0031BA 3336 | BSET #6,D4 3337 | SUB.W D2,D7 3338 | SUB.W D2,D7 3339 | BSR blitprio 3340 | MOVE.W D7,$DFF052 ;BLTAPTL 3341 | ADD.W D7,D7 3342 | MOVE.W D7,$DFF064 ;BLTAMOD 3343 | BRA.S lbC0031D0 3344 | 3345 | lbC0031BA: 3346 | BSR blitprio 3347 | MOVE.W D7,$DFF052 ;BLTAPTL 3348 | SUB.W D2,D7 3349 | SUB.W D2,D7 3350 | ADD.W D7,D7 3351 | MOVE.W D7,$DFF064 ;BLTAMOD 3352 | lbC0031D0: 3353 | ADD.W D3,D3 3354 | MOVE.W D3,$DFF062 3355 | ROR.W #4,D6 3356 | ANDI.W #$F000,D6 3357 | ORI.W #$0BFA,D6 3358 | MOVE.W #$28,$DFF060 ;BLTCMOD 3359 | MOVE.L #$FFFFFFFF,$DFF044 ;BLTAFWM 3360 | MOVE.W #$8000,$DFF074 ;BLTADAT 3361 | MOVE.W D6,$DFF040 ;BLTCON0 3362 | MOVE.W D4,$DFF042 ;BLTCON1 3363 | MOVE.L A0,$DFF048 ;BLTCPTH 3364 | MOVE.L A0,$DFF054 ;BLTDPTH 3365 | MOVE.W D5,$DFF058 ;BLTSIZE 3366 | MOVEM.L (SP)+,D0-D7/A0-A6 3367 | RTS 3368 | 3369 | blitprio: 3370 | MOVE.W #$8400,$DFF096 ;DMACON, set blitter prio 3371 | .waitblit: 3372 | BTST #14,$DFF002 ;DMACONR, #14 is allowed, but should be 6 3373 | BNE.S .waitblit 3374 | MOVE.W #$400,$DFF002 ;Reset blitter prio 3375 | RTS 3376 | 3377 | ; Get Sine and Cosine from table 3378 | ; input D0 = x 3379 | ; output D1 = sin(x) 3380 | ; output D2 = cos(x) 3381 | get_sines: 3382 | LEA sine_data,A1 3383 | LSL.W #1,D0 3384 | MOVE.W (A1,D0.W),D1 3385 | LEA cosine_data,A1 3386 | MOVE.W (A1,D0.W),D2 3387 | RTS 3388 | 3389 | init_rot: 3390 | MOVEQ #0,D1 3391 | MOVE.W #$4000,D2 3392 | MOVE.W D2,w57E64 3393 | MOVE.W D1,w57E66 3394 | MOVE.W D1,w57E68 3395 | MOVE.W D1,w57E6A 3396 | MOVE.W D2,w57E6C 3397 | MOVE.W D1,w57E6E 3398 | MOVE.W D1,w57E70 3399 | MOVE.W D1,w57E72 3400 | MOVE.W D2,w57E74 3401 | RTS 3402 | 3403 | calc_rot_b: 3404 | MOVE.W rot_b,D0 3405 | JSR get_sines 3406 | MOVE.W D1,D3 3407 | MOVE.W D2,D4 3408 | MOVE.W w57E64,w57E52 3409 | MOVE.W w57E6A,w57E58 3410 | MOVE.W w57E70,w57E5E 3411 | MULS.W w57E66,D2 3412 | MULS.W w57E68,D1 3413 | SUB.L D1,D2 3414 | LSL.L #2,D2 3415 | SWAP D2 3416 | MOVE.W D2,w57E54 3417 | MOVE.W D3,D1 3418 | MOVE.W D4,D2 3419 | MULS.W w57E6C,D2 3420 | MULS.W w57E6E,D1 3421 | SUB.L D1,D2 3422 | LSL.L #2,D2 3423 | SWAP D2 3424 | MOVE.W D2,w57E5A 3425 | MOVE.W D3,D1 3426 | MOVE.W D4,D2 3427 | MULS.W w57E72,D2 3428 | MULS.W w57E74,D1 3429 | SUB.L D1,D2 3430 | LSL.L #2,D2 3431 | SWAP D2 3432 | MOVE.W D2,w57E60 3433 | MOVE.W D3,D1 3434 | MOVE.W D4,D2 3435 | MULS.W w57E66,D1 3436 | MULS.W w57E68,D2 3437 | ADD.L D1,D2 3438 | LSL.L #2,D2 3439 | SWAP D2 3440 | MOVE.W D2,w57E56 3441 | MOVE.W D3,D1 3442 | MOVE.W D4,D2 3443 | MULS.W w57E6C,D1 3444 | MULS.W w57E6E,D2 3445 | ADD.L D1,D2 3446 | LSL.L #2,D2 3447 | SWAP D2 3448 | MOVE.W D2,w57E5C 3449 | MULS.W w57E72,D3 3450 | MULS.W w57E74,D4 3451 | ADD.L D3,D4 3452 | LSL.L #2,D4 3453 | SWAP D4 3454 | MOVE.W D4,w57E62 3455 | 3456 | MOVE.L #w57E52,A1 3457 | MOVE.L #w57E64,A2 3458 | MOVEQ #8,D7 3459 | .copy: 3460 | MOVE.W (A1)+,(A2)+ 3461 | DBRA D7,.copy 3462 | RTS 3463 | 3464 | calc_rot_a: 3465 | MOVE.W rot_a,D0 3466 | JSR get_sines 3467 | MOVE.W D1,D3 3468 | MOVE.W D2,D4 3469 | MULS.W w57E64,D2 3470 | MULS.W w57E68,D1 3471 | ADD.L D1,D2 3472 | LSL.L #2,D2 3473 | SWAP D2 3474 | MOVE.W D2,w57E52 3475 | MOVE.W D3,D1 3476 | MOVE.W D4,D2 3477 | MULS.W w57E6A,D2 3478 | MULS.W w57E6E,D1 3479 | ADD.L D1,D2 3480 | LSL.L #2,D2 3481 | SWAP D2 3482 | MOVE.W D2,w57E58 3483 | MOVE.W D3,D1 3484 | MOVE.W D4,D2 3485 | MULS.W w57E70,D2 3486 | MULS.W w57E74,D1 3487 | ADD.L D1,D2 3488 | LSL.L #2,D2 3489 | SWAP D2 3490 | MOVE.W D2,w57E5E 3491 | NEG.W D3 3492 | MOVE.W D3,D1 3493 | MOVE.W D4,D2 3494 | MOVE.W w57E66,w57E54 3495 | MOVE.W w57E6C,w57E5A 3496 | MOVE.W w57E72,w57E60 3497 | MULS.W w57E64,D1 3498 | MULS.W w57E68,D2 3499 | ADD.L D1,D2 3500 | LSL.L #2,D2 3501 | SWAP D2 3502 | MOVE.W D2,w57E56 3503 | MOVE.W D3,D1 3504 | MOVE.W D4,D2 3505 | MULS.W w57E6A,D1 3506 | MULS.W w57E6E,D2 3507 | ADD.L D1,D2 3508 | LSL.L #2,D2 3509 | SWAP D2 3510 | MOVE.W D2,w57E5C 3511 | MULS.W w57E70,D3 3512 | MULS.W w57E74,D4 3513 | ADD.L D3,D4 3514 | LSL.L #2,D4 3515 | SWAP D4 3516 | MOVE.W D4,w57E62 3517 | 3518 | MOVEQ #8,D7 3519 | MOVE.L #w57E52,A1 3520 | MOVE.L #w57E64,A2 3521 | .copy: 3522 | MOVE.W (A1)+,(A2)+ 3523 | DBRA D7,.copy 3524 | RTS 3525 | 3526 | calc_points: 3527 | MOVE.L #num_points-1,D0 3528 | MOVE.L #points_x,A1 3529 | MOVE.L #points_y,A2 3530 | MOVE.L #points_z,A3 3531 | MOVE.L #points_rot_x,A4 3532 | MOVE.L #points_rot_y,A5 3533 | MOVE.L #points_rot_z,A6 3534 | calcloop: 3535 | MOVE.W (A1)+,D1 3536 | MOVE.W D1,D4 3537 | MOVE.W (A2)+,D2 3538 | MOVE.W D2,D5 3539 | MOVE.W (A3)+,D3 3540 | MOVE.W D3,D6 3541 | MULS.W w57E64,D1 3542 | MULS.W w57E6A,D2 3543 | MULS.W w57E70,D3 3544 | ADD.L D1,D2 3545 | ADD.L D2,D3 3546 | SWAP D3 3547 | MOVE.W D3,(A4)+ 3548 | MOVE.W D4,D1 3549 | MOVE.W D5,D2 3550 | MOVE.W D6,D3 3551 | MULS.W w57E66,D1 3552 | MULS.W w57E6C,D2 3553 | MULS.W w57E72,D3 3554 | ADD.L D1,D2 3555 | ADD.L D2,D3 3556 | SWAP D3 3557 | MOVE.W D3,(A5)+ 3558 | MULS.W w57E68,D4 3559 | MULS.W w57E6E,D5 3560 | MULS.W w57E74,D6 3561 | ADD.L D4,D5 3562 | ADD.L D5,D6 3563 | SWAP D6 3564 | MOVE.W D6,(A6)+ 3565 | DBRA D0,calcloop 3566 | RTS 3567 | 3568 | ; Project the points from three-dimensional space (x,y,z) 3569 | ; to screen coordinates (x,y) 3570 | 3571 | do_proj: 3572 | MOVE.L #points_rot_x,A1 3573 | MOVE.L #points_rot_y,A2 3574 | MOVE.L #points_rot_z,A3 3575 | MOVE.L #points_proj_x,A4 3576 | MOVE.L #points_proj_y,A5 3577 | MOVE.L #num_points-1,D0 3578 | projloop: 3579 | MOVE.W (A3)+,D3 3580 | MOVE.W (A1)+,D4 3581 | MOVE.W (A2)+,D5 3582 | LSL.L #8,D4 3583 | LSL.L #8,D5 3584 | EXT.L D4 3585 | EXT.L D5 3586 | ADD.W #$100,D3 3587 | TST.W D3 3588 | BNE .notzero 3589 | MOVE.W #1,D3 3590 | .notzero: 3591 | DIVS.W D3,D4 3592 | DIVS.W D3,D5 3593 | ADD.W #168,D4 3594 | ADD.W #128,D5 3595 | MOVE.W D4,(A4)+ 3596 | MOVE.W D5,(A5)+ 3597 | DBRA D0,projloop 3598 | RTS 3599 | 3600 | draw_lines: 3601 | MOVE.L #points_proj_x,A4 3602 | MOVE.L #points_proj_y,A5 3603 | MOVE.L #line_table,A6 3604 | MOVE.L #num_lines-1,D0 3605 | .loop: 3606 | MOVE.L (A6)+,D1 3607 | SUBQ.W #1,D1 3608 | ADD.W D1,D1 3609 | MOVE.W (A4,D1.W),D2 3610 | MOVE.W (A5,D1.W),D3 3611 | SWAP D1 3612 | SUBQ.W #1,D1 3613 | ADD.W D1,D1 3614 | MOVE.W (A4,D1.W),A2 3615 | MOVE.W (A5,D1.W),A3 3616 | BSR draw_line 3617 | DBRA D0,.loop 3618 | RTS 3619 | 3620 | ; 37 3D point coordinates, split into separate x, y and z value tables. 3621 | ; z is always zero, which could be optimized in the code. 3622 | points_x: 3623 | dc.w -400,-340,-340,-400,-400 3624 | dc.w -320,-292,-260,-240,-180 3625 | dc.w -180,-240,-240,-180,$FF60 3626 | dc.w -132,-100,-80,-80,-20 3627 | dc.w -20,0,0,60,60 3628 | dc.w 80,80,100,100,140 3629 | dc.w 180,180,200,200,220 3630 | dc.w 252,280 3631 | 3632 | points_y: 3633 | dc.w -60,-60,0,0,60 3634 | dc.w 60,-60,60,-60,-60 3635 | dc.w 0,0,60,60,60 3636 | dc.w -60,60,-60,60,-60 3637 | dc.w 60,-60,60,60,-60 3638 | dc.w -60,60,-60,60,0 3639 | dc.w -60,60,-60,60,60 3640 | dc.w -60,60 3641 | 3642 | points_z: 3643 | dc.w 0,0,0,0,0 3644 | dc.w 0,0,0,0,0 3645 | dc.w 0,0,0,0,0 3646 | dc.w 0,0,0,0,0 3647 | dc.w 0,0,0,0,0 3648 | dc.w 0,0,0,0,0 3649 | dc.w 0,0,0,0,0 3650 | dc.w 0,0 3651 | 3652 | ; Line table defining (from,to) using point ids. 3653 | ; Could be made zero-based saving a SUBQ. 3654 | line_table: 3655 | dc.w 1,2 3656 | dc.w 2,3 3657 | dc.w 3,4 3658 | dc.w 1,5 3659 | dc.w 6,7 3660 | dc.w 7,8 3661 | dc.w 9,10 3662 | dc.w 10,11 3663 | dc.w 11,12 3664 | dc.w 9,13 3665 | dc.w 12,14 3666 | dc.w 15,$10 3667 | dc.w $10,$11 3668 | dc.w $12,$13 3669 | dc.w $14,$15 3670 | dc.w $12,$15 3671 | dc.w $16,$17 3672 | dc.w $17,$18 3673 | dc.w $18,$19 3674 | dc.w $19,$16 3675 | dc.w $1A,$1B 3676 | dc.w $1C,$1D 3677 | dc.w $1C,$1E 3678 | dc.w $1E,$1F 3679 | dc.w $1F,$20 3680 | dc.w $21,$22 3681 | dc.w $23,$24 3682 | dc.w $24,$25 3683 | 3684 | ; Vector rotation angles 3685 | ; Initialized to $3333 in the unpacked data, which probably was 3686 | ; not intentional, but sets the rotation to a specific start. 3687 | rot_b: dc.w $3333 3688 | rot_a: dc.w $3333 3689 | 3690 | ; Destination arrays for vector calculations 3691 | points_rot_x: ds.w 1600 ; org. $53FD2 3692 | points_rot_y: ds.w 1600 ; org. $54C52 3693 | points_rot_z: ds.w 1600 ; org. $558d2 3694 | points_proj_x: ds.w 1600 ; org. $56552 3695 | points_proj_y: ds.w 1600 ; org. $571d2 3696 | 3697 | ; Temporary variables for vector calculation 3698 | w57E52: dc.w 0 3699 | w57E54: dc.w 0 3700 | w57E56: dc.w 0 3701 | w57E58: dc.w 0 3702 | w57E5A: dc.w 0 3703 | w57E5C: dc.w 0 3704 | w57E5E: dc.w 0 3705 | w57E60: dc.w 0 3706 | w57E62: dc.w 0 3707 | 3708 | w57E64: dc.w 0 3709 | w57E66: dc.w 0 3710 | w57E68: dc.w 0 3711 | w57E6A: dc.w 0 3712 | w57E6C: dc.w 0 3713 | w57E6E: dc.w 0 3714 | w57E70: dc.w 0 3715 | w57E72: dc.w 0 3716 | w57E74: dc.w 0 3717 | --------------------------------------------------------------------------------