|
|
This page contains no introduction. |
Source Code Fragments#
A good chunk of code can be seen, scattered through the game. These can be seen with a hex editor at the hex addresses listed below in the .dsk dump. Note that these code fragments are repeated multiple times and some instances are more complete than others.
3D00:
org &ae00,&4000
nolist
limit &ffff
ld hl,(&be7d)
ld a,(hl) ;current drive
ld (drive+1),a
ld c,&ff
ld hl,start
call &bd16
.start
call &bccb
.drive ld a,0
ld hl,(&be7d)
ld (hl),a
ld a,0
call &bc0e
ld bc,&000
call &bc38
ld hl,colour_palette
ld b,16
xor a
.do_colours
push bc
push af
ld c,(hl)
inc hl
ld b,c
push hl
call &bc32
pop hl
pop af
pop bc
inc a
djnz do_colours
call load_block
call exec_it
ld hl,&4000
ld de,&c000
ld bc,&4000
ldir
call load_block
call load_block
di
jp &3089
.load_block
ld hl,end_filename-1
inc (hl)
ld b,end_filename-filename
ld hl,filename
ld de,&c000
call &bc77
ex de,hl
call &bc83
push hl
call &bc7a
pop hl
ret
.exec_it
jp (hl)
.execution_address defw 0
.colour_palette
defb 0,&d,&1a,&15,&19,&9,&18,&0a,&14,&1,&2,&b,&10,&f,&3,&6
.filename
defb "ARKANOID.BI0"
.end_filename
4091:
.routine_address equ &35fc
org routine_address
nolist
write"arkanoid.lod"
let mode=1 ;screen mode
.load_address equ &4000;address to put file
.km_initialise equ &bb00
.txt_output equ &bb5a
.cas_in_open equ &bc77
.cas_in_direct equ &bc83
.cas_in_close equ &bc7a
.cas_in_abandon equ &bc7d
.kl_init_back equ &bcce
.kl_l_rom_disable equ &b909
;; ** STORE DATA USED BY PROGRAM THAT WILL BE CORRUPTED BY INITIALISATION OF **
;; ** FIRMWARE **
di
ld (stack+1),sp ;save stack used by program
ld sp,&c000 ;new stack used by firmware and load routines
;; ** SAVE DATA OVERWRITTEN BY FIRMWARE **
;; !!EXAMPLE!!
ld hl,&a800
ld de,&c100
ld bc,&c000-&a800
ldir
ld hl,&0000
ld bc,&0040
ldir
;;ld hl,&a800
;;ld de,&c000 ;upper firmware area (&a800?-&c000)
;;ld a,4
;;.next push af
4E00:
;;push de
;;ld bc,&600
;;ldir
;;pop de
;;ld a,d
;;add a,8
;;ld d,a
;;pop af
;;dec a
;;jr nz,next
;;ld h,&00 ;firmware lower jumpblock (&0000-&0040)
;;ld l,0
;;ld c,&40
;;ldir
ld hl,here
ld de,&c000
ld bc,end-here
push de
ldir
ret
;; ** INITIALISE ALTERNATE REGISTER SET FOR FIRMWARE **
.here
exx
ld bc,&7f00+%10001000+mode ;initialise lower rom and select mode
out (c),c ;this routine must be located above &4000
exx
ex af,af'
xor a
ex af,af'
;; ** INITIALISE FIRMWARE **
call &0044 ;initialise lower jumpblock (&0000-&0040)
;and high kernal jumpblock (&b800-&bae4)
call &08bd ;initialise firmware jumpblock entries
;(&bb00- ...)
call km_initialise ;initialise keyboard manager
call kl_l_rom_disable ;disable lower rom
;; ** INITIALISE DISK ROM FOR LOADING/SAVING **
ld c,7 ;disk rom
ld de,&0040 ;lowest useable byte of memory
ld hl,&b0ff ;highest useable byte of memory
call kl_init_back ;initialise disk rom
xor a ;select drive (A)
ld (&ac00),a
ld a,&ff
ld (&be78),a ;turn of disc error messages
ld a,&c9
ld (txt_output),a ;prevent printing of text characters
;don't get error messages corrupting screen
;; ** LOAD FILE USING FIRMWARE **
ld b,end_filename-filename ;length of filename
ld hl,filename ;address of filename in memory
ld de,load_address ;address to put file/2k buffer to use (unused since
;read direct used
call cas_in_open ;open file
ld hl,load_address ;HL = load address, BC = length of file
call cas_in_direct ;read it
call cas_in_close ;close it
;; ** RESTORE DATA WHICH WOULD HAVE BEEN OVERWRITTEN BY FIRMWARE **
;; !!EXAMPLE!!
di
ld hl,&c100
ld de,&a800
ld bc,&c000-&a800
ldir
ld de,&0000
ld bc,&0040
ldir
;;ld hl,&c000 ;copy back data
;;ld de,&a800
;;ld a,4
;;.next2 push af
;;push hl
;;ld bc,&0600
;;ldir
;;pop hl
;;ld a,h
;;add a,8
;;ld h,a
;;pop af
;;dec a
;;jr nz,next2
;;ld d,&00 ;copy back &0000-&0040
;;ld e,0
;;ld c,&40
;;ldir
.stack ld sp,0 ;old stack back and...
ret ;...exit to program!!
.filename
defb "ARKANOID.LV0"
.end_filename
.end
Developer Message#
A small message can be found at A005 in the .dsk dump:
HELLO HACKERS STOP PEEKING (SORRY) AT MY (RUSHED) CODE.
THERE IS A CHEAT MODE IF YOU CAN FIND IT ????
|
The Arkanoid series | |
|---|---|
|
Arcade |
|
|
NES |
|
|
Amiga |
|
|
Atari ST |
|
|
Amstrad CPC |
|
|
DOS |
|
|
SNES |
|
|
Nintendo DS |
|
|
Related Games | |
|
PlayStation |
|