303 lines
4.5 KiB
NASM
303 lines
4.5 KiB
NASM
;=================================
|
|
; DOME IN-GAME-CODE
|
|
;
|
|
; CODE.XXX = LEVEL
|
|
;
|
|
;=================================
|
|
|
|
|
|
GET_INT .equ 0x0100
|
|
PUT_INT .equ 0x0103
|
|
COLOR_WHITE .equ 0x0106
|
|
COLOR_BLACK .equ 0x0109
|
|
SCREEN_ON .equ 0x010C
|
|
SCREEN_OFF .equ 0x010F
|
|
SET_SCREEN0 .equ 0x0112
|
|
SET_SCREEN5 .equ 0x0115
|
|
SPRITES_ON .equ 0x0118
|
|
SPRITES_OFF .equ 0x011B
|
|
;PUT_SPRITE .equ 0x011E
|
|
SET_PAGE .equ 0x0121
|
|
GET_TIME .equ 0x0124
|
|
PUT_TXT .equ 0x0127
|
|
PUT_TXT2 .equ 0x012A
|
|
INIT_BIOS .equ 0x012D
|
|
EXIT_ON_ERR .equ 0x0130
|
|
LOAD .equ 0x0133
|
|
INIT_LIB .equ 0x0136
|
|
SAVE .equ 0x0139
|
|
PUT_PAGE_FD .equ 0x013C
|
|
PUT_PAGE_FE .equ 0x013F
|
|
|
|
INIT_REP .equ 0x0142
|
|
LOAD_MUS .equ 0x0145
|
|
LOAD_SAM .equ 0x0148
|
|
PLAY .equ 0x014B
|
|
STOP .equ 0x014E
|
|
FADE .equ 0x0151
|
|
NEXT .equ 0x0154
|
|
MUS_NR .equ 0x0157
|
|
POP_UP_START .equ 0x015A
|
|
PUTBLK .equ 0x015D
|
|
PUT_COLOR .equ 0x0160
|
|
DOME_MENU_CALL .equ 0x0163
|
|
RESTORE_MEM .equ 0x0166
|
|
INIT_BIOS_MEM .equ 0x0169
|
|
|
|
|
|
; org 0x1000
|
|
|
|
JP INIT_DOME_HOOK ;0x1000
|
|
JP ALGEMEEN_HOOK ;0x1003
|
|
JP AI_MS_HOOK1 ;0x1006
|
|
JP AI_MS_HOOK2 ;0x1009
|
|
JP INT_HOOK ;0x100C
|
|
;---
|
|
JP BRIEFING_START ;0x100F
|
|
JP BRIEFING_DEAD ;0x1002
|
|
JP BRIEFING_END ;0x1005
|
|
|
|
INIT_DOME_HOOK:
|
|
CALL GET_TIME
|
|
LD (BEGIN_TIME),HL
|
|
RET
|
|
|
|
ALGEMEEN_HOOK:
|
|
CALL TIME
|
|
RET
|
|
|
|
|
|
TIME:
|
|
CALL GET_TIME
|
|
LD DE,(BEGIN_TIME)
|
|
XOR A
|
|
SBC HL,DE
|
|
RET NZ
|
|
;LD A,#435 (ERR CODE)
|
|
;JP MISSION_FAILD (BIOS)
|
|
|
|
BEGIN_TIME: .dw 0
|
|
|
|
BLABLA: .str "YOU CONCED DOME REAL ENMY SO BE NOT IN SHIT NEXT TIME...."
|
|
.db 0x0A,0x0D,0x1D
|
|
|
|
|
|
AI_MS_HOOK1:
|
|
RET
|
|
|
|
AI_MS_HOOK2:
|
|
RET
|
|
|
|
INT_HOOK:
|
|
RET
|
|
|
|
BRIEF: .str "BRIEF ZOP"
|
|
PAGE5: .str "PAGE5 ZOP"
|
|
|
|
BRIEFING_START:
|
|
|
|
LD HL,#PAGE5
|
|
LD DE,#0x4000
|
|
LD BC,#0x2000
|
|
LD A,#0
|
|
CALL LOAD
|
|
LD HL,#0x4000
|
|
LD DE,#0x8000
|
|
LD A,#1
|
|
CALL POP_UP_START
|
|
|
|
LD HL,#BRIEF
|
|
LD DE,#0x4000
|
|
LD BC,#0x1000
|
|
LD A,#0
|
|
CALL LOAD
|
|
LD HL,#0x4000
|
|
LD DE,#0x8000
|
|
LD A,#0
|
|
CALL POP_UP_START
|
|
|
|
LD HL,#COLOR_DOME_GAME
|
|
CALL PUT_COLOR
|
|
|
|
CALL SCREEN_ON
|
|
|
|
LD A,#63
|
|
CALL SET_PAGE
|
|
|
|
LD HL,#MISSION_NAME
|
|
CALL PUT_TXT_GFX2
|
|
|
|
LD HL,#MISSION_BRIEFING
|
|
CALL PUT_TXT_GFX
|
|
CALL CHK_SPATIE
|
|
RET
|
|
|
|
CHK_SPATIE:
|
|
IN A,(0xAA) ; check op spatie...
|
|
AND #0xF0
|
|
OR #8
|
|
OUT (0xAA),A
|
|
IN A,(0xA9)
|
|
AND #1
|
|
RET Z
|
|
EI
|
|
HALT
|
|
JR CHK_SPATIE
|
|
|
|
PUT_TXT_GFX2:
|
|
|
|
PUSH HL
|
|
POP DE
|
|
|
|
LD IY,#LETCOP2
|
|
|
|
LD 4(IY),#16
|
|
LD 6(IY),#8
|
|
JR PUT2LP
|
|
|
|
PUT_TXT_GFX:
|
|
|
|
PUSH HL
|
|
POP DE
|
|
|
|
LD IY,#LETCOP2
|
|
|
|
LD 4(IY),#0
|
|
LD 6(IY),#48
|
|
PUT2LP:
|
|
LD A,(DE)
|
|
CP #0x1D ; END
|
|
RET Z
|
|
CP #32
|
|
JR Z,PUT2LP_CONT ; SPACE
|
|
CP #0x0A
|
|
JR Z,LEFT ; TO LEFT SIDE OF SCREEN
|
|
CP #0x0D
|
|
JR Z,RETURN ; NEXT LINE
|
|
|
|
SUB #46
|
|
LD B,#0
|
|
SLA A
|
|
RL B
|
|
SLA A
|
|
RL B
|
|
SLA A ;3 KEER = 8 > 2^3
|
|
RL B
|
|
LD 0(IY),A
|
|
SLA B
|
|
SLA B
|
|
SLA B
|
|
LD A,B
|
|
ADD #136
|
|
LD 2(IY),A
|
|
|
|
PUSH IY
|
|
POP HL
|
|
CALL PUTBLK
|
|
|
|
IN A,(0xAA) ; check op spatie...
|
|
AND #0xF0
|
|
OR #8
|
|
OUT (0xAA),A
|
|
IN A,(0xA9)
|
|
AND #1
|
|
RET Z
|
|
|
|
EI
|
|
HALT
|
|
HALT
|
|
HALT
|
|
HALT
|
|
HALT
|
|
HALT
|
|
HALT
|
|
HALT
|
|
|
|
PUT2LP_CONT:
|
|
INC DE
|
|
LD A,4(IY)
|
|
ADD #6
|
|
LD 4(IY),A
|
|
CP #148
|
|
JR C,PUT2LP
|
|
|
|
LD A,6(IY)
|
|
ADD #8
|
|
LD 6(IY),A
|
|
|
|
XOR A
|
|
LD 4(IY),A
|
|
JR PUT2LP
|
|
LEFT:
|
|
INC DE
|
|
XOR A
|
|
LD 4(IY),A
|
|
JR PUT2LP
|
|
RETURN:
|
|
INC DE
|
|
LD A,6(IY)
|
|
ADD #8
|
|
LD 6(IY),A
|
|
JR PUT2LP
|
|
|
|
LETCOP2: .db 0,0,136,3,0,0,0,1,8,0,8,0,0,0,0x98
|
|
|
|
|
|
MISSION_NAME:
|
|
.str "FIRST CONTACT :"
|
|
.db 0x0A,0x0D,0x1D
|
|
|
|
|
|
MISSION_BRIEFING: ; " <== TOT DAAR DE TEXT OF ANDERS !!!
|
|
.str "IT IS YOUR DUTY AS"
|
|
.db 0x0A,0x0D
|
|
.str "AN OFFICIER OF THE"
|
|
.db 0x0A,0x0D
|
|
.str "FORCE TO PROTECT"
|
|
.db 0x0A,0x0D
|
|
.str "YOUR BASE."
|
|
.db 0x0A,0x0D
|
|
.str "AND DESTROY THE ENEMY"
|
|
.db 0x0A,0x0D
|
|
.str "COMPLETELY."
|
|
.db 0x0A,0x0D
|
|
.str "BUT BE AWARE THAT"
|
|
.db 0x0A,0x0D
|
|
.str "THE ENEMY IS VERY"
|
|
.db 0x0A,0x0D
|
|
.str "INTELLIGENT AND HAS"
|
|
.db 0x0A,0x0D
|
|
.str "A GREAT DEFENSIVE"
|
|
.db 0x0A,0x0D
|
|
.str "ARMY"
|
|
.db 0x0A,0x0D
|
|
.str "WE WILL SENT SOME"
|
|
.db 0x0A,0x0D
|
|
.str "MORE TROOPS TO"
|
|
.db 0x0A,0x0D
|
|
.str "SUPPORT YOU IN YOUR"
|
|
.db 0x0A,0x0D
|
|
.str "MISSION.GOOD LUCK."
|
|
.db 0x0A,0x0D
|
|
.db 0x0A,0x0D
|
|
.str " PRESS SPACE"
|
|
.db 0x0A,0x0D
|
|
.db 0x1D ; END BRIEFING
|
|
|
|
|
|
COLOR_DOME_GAME:
|
|
.db #00,#00,#62,#04,#52,#03,#50,#02
|
|
.db #23,#02,#20,#01,#53,#04,#11,#01
|
|
.db #00,#04,#45,#04,#40,#01,#72,#05
|
|
.db #04,#01,#06,#02,#00,#00,#77,#07
|
|
|
|
BRIEFING_DEAD:
|
|
LD HL,#BLABLA
|
|
RET ; GET BACK TO THE GAME OVER SCROOL
|
|
|
|
BRIEFING_END:
|
|
LD HL,#BLABLA
|
|
RET ; GET BACK TO THE CHOOSER CODE..
|
|
|
|
.area _DATA
|