We just released a Feb. 5 '89 prototype of DuckTales for the NES!
If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!
If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!
Arkanoid II: Revenge of DOH (Amstrad CPC)
Jump to navigation
Jump to search
Games > Games by content > Games with hidden developer messages
Games > Games by content > Games with uncompiled source code
Games > Games by developer > Games developed by Ocean
Games > Games by platform > Amstrad CPC games
Games > Games by publisher > Games published by Ocean > Games published by Imagine > Games published by Imagine Software
Games > Games by release date > Games released in 1988
Games > Games by series > Arkanoid series
| Arkanoid II: Revenge of DOH |
|---|
|
Developer:
Ocean
|
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 | Arkanoid • Arkanoid: Revenge of DOH |
| NES | Arkanoid • Arkanoid II |
| Amiga | Arkanoid |
| Atari ST | Arkanoid II: Revenge of DOH |
| Amstrad CPC | Arkanoid II: Revenge of DOH |
| DOS | Arkanoid (1988) • Arkanoid II: Revenge of DOH |
| SNES | Arkanoid: Doh It Again |
Games > Games by content > Games with hidden developer messages
Games > Games by content > Games with uncompiled source code
Games > Games by developer > Games developed by Ocean
Games > Games by platform > Amstrad CPC games
Games > Games by publisher > Games published by Ocean > Games published by Imagine > Games published by Imagine Software
Games > Games by release date > Games released in 1988
Games > Games by series > Arkanoid series
