; ############## INITIALIZATION SECTION #################################### .org 0 .include "usgard.h" .include "orzupi.h" .db "Universe for Orzunoid 5+",0 ld hl,&ldata ld de,WUIB_ADDR ld bc,WUIB_SIZE ldir ld hl,(PROGRAM_ADDR) ld (UNIVERSE_ADDR),hl ld hl,&name jp VAR_EXEC name: .db "Orzunoid",0 ; ############## VARIABLES ################################################# guardplus =TEXT_MEM2 A =10 B =11 ; ############## UNIVERSE INTERFACE BLOCK ################################## ldata: .db $D1 ;Revision 1 .db $4F ;Game name .db "MBLOX : PAD 21/01/98",0 ;Level ID .db 5 ;Number of levels jp &LoadLevel ;Load level A jp &Init ;Code called at universe start jp &Loop ;Code called every loop jp &Bonus ;Code called when collected jp &EBHandler ;Extra block handler end_data: ; ############## IMPLEMENTATION SECTION #################################### LoadLevel: ld hl,guardplus ld (hl),0 ld hl,(UNIVERSE_ADDR) ld de,Level_Place add hl,de jp $8AAD ;ExtBlox Level_Place: ld hl,LevelData-64 ld de,(UNIVERSE_ADDR) add hl,de ld de,64 inc a ld b,a loop_add_addr: add hl,de djnz loop_add_addr ld DE,map ld b,64 lpm: ld a,(hl) rra rra rra rra and 15 ld (de),a inc de ld a,(hl) and 15 ld (de),a inc de inc hl djnz lpm ret Init: cp $50 jp nz, OTH_EXIT ret EBHandler: ld a,(hl) push hl ld hl,(score) ld de,100 add hl,de ld (score),hl pop hl sub 4 jr z,b4 dec a jr z,b5 dec a jr z,b6 dec a jr z,b7 dec a jr z,b8 dec a jr z,b9 dec a jr z,b10 b11: ld de,-17 add hl,de jr b8 b10: ld de,-16 add hl,de jr b8 b9: dec hl b8: ld (hl),4 inc hl ld (hl),5 ld de,15 add hl,de ld (hl),6 inc hl ld (hl),7 scf ret b7: inc a ld (hl),a dec hl ld (hl),a ld de,-16 bcommon: add hl,de ld (hl),a inc hl ld (hl),a scf ret b6: inc a ld (hl),a inc hl ld (hl),a ld de,-17 jr bcommon b5: inc a ld (hl),a dec hl ld (hl),a ld de,16 jr bcommon b4: inc a ld (hl),a inc hl ld (hl),a ld de,15 jr bcommon Loop: ld a,(guardplus) or a jr z,nospecialbonus ld hl,GRAPH_MEM+864 ld b,16 lput: ld (hl),a inc hl djnz lput ld hl,guard cp (hl) jr z,nospecialbonus ld (hl),255 xor a ld (guardplus),a nospecialbonus: ld ix,GRAPH_MEM ld hl,data ld b,8 rs_outer:push bc ld b,16 ld de, rs_inner:ld a,(hl) sub 4 jr z,db4 sub 4 jr z,db8 ok: inc hl inc ix djnz rs_inner ld de,48 add ix,de pop bc djnz rs_outer ret db4: cpl ld (won),a ld (ix+32),%11000000 ld (ix+48),%11000000 ld (ix+64),%11000000 ld (ix+80),%11000000 ld (ix+33),%00000011 ld (ix+49),%00000011 ld (ix+65),%00000011 ld (ix+81),%00000011 dbc: ld (ix+0) ,%11111111 ld (ix+16),%11111111 ld (ix+97),%11111111 ld (ix+113),%11111111 ld (ix+96),%11111111 ld (ix+112),%11111111 ld (ix+1) ,%11111111 ld (ix+17),%11111111 jr ok db8: cpl ld (won),a ld (ix+32),%11111111 ld (ix+48),%11100000 ld (ix+64),%11100000 ld (ix+80),%11111111 ld (ix+33),%11111111 ld (ix+49),%00000111 ld (ix+65),%00000111 ld (ix+81),%11111111 jr dbc Bonus: ld a,255 ld (guard),a ld (guardplus),a ret LevelData: .db $33,$33,$33,$33,$33,$33,$33,$33 .db $30,$00,$00,$00,$00,$00,$00,$03 .db $30,$04,$50,$45,$04,$50,$45,$03 .db $30,$06,$70,$67,$06,$70,$67,$03 .db $30,$00,$00,$00,$00,$00,$00,$03 .db $30,$45,$04,$50,$45,$04,$50,$03 .db $30,$67,$06,$70,$67,$06,$70,$03 .db $30,$00,$00,$00,$00,$00,$00,$03 .db $00,$45,$04,$50,$45,$04,$50,$45 .db $00,$67,$06,$70,$67,$06,$70,$67 .db $00,$00,$00,$00,$00,$00,$00,$00 .db $04,$50,$45,$04,$50,$45,$04,$50 .db $06,$70,$67,$06,$70,$67,$06,$70 .db $00,$00,$00,$00,$00,$00,$00,$00 .db $45,$04,$50,$45,$04,$50,$45,$00 .db $67,$06,$70,$67,$06,$70,$67,$00 .db $33,$33,$33,$33,$33,$33,$33,$33 .db $30,$00,$00,$00,$00,$00,$00,$03 .db $30,$08,$90,$89,$08,$90,$89,$03 .db $30,$0A,$B0,$AB,$0A,$B0,$AB,$03 .db $30,$00,$00,$00,$00,$00,$00,$03 .db $30,$45,$04,$50,$45,$04,$50,$03 .db $30,$67,$06,$70,$67,$06,$70,$03 .db $30,$00,$00,$00,$00,$00,$00,$03 .db $00,$89,$08,$90,$89,$08,$90,$89 .db $00,$AB,$0A,$B0,$B7,$0A,$B0,$AB .db $00,$00,$00,$00,$00,$00,$00,$00 .db $04,$50,$45,$04,$50,$45,$04,$50 .db $06,$70,$67,$06,$70,$67,$06,$70 .db $00,$00,$00,$00,$00,$00,$00,$00 .db $45,$04,$50,$45,$04,$50,$45,$00 .db $67,$06,$70,$67,$06,$70,$67,$00 .db $00,$89,$08,$90,$89,$08,$90,$89 .db $00,$AB,$0A,$B0,$B7,$0A,$B0,$AB .db $00,$00,$00,$00,$00,$00,$00,$00 .db $08,$90,$89,$08,$90,$89,$08,$90 .db $0A,$B0,$AB,$0A,$B0,$AB,$0A,$B0 .db $00,$00,$00,$00,$00,$00,$00,$00 .db $45,$04,$50,$45,$04,$50,$45,$00 .db $67,$06,$70,$67,$06,$70,$67,$00 .db $00,$89,$08,$90,$89,$08,$90,$89 .db $00,$AB,$0A,$B0,$B7,$0A,$B0,$AB .db $00,$00,$00,$00,$00,$00,$00,$00 .db $08,$90,$89,$08,$90,$89,$08,$90 .db $0A,$B0,$AB,$0A,$B0,$AB,$0A,$B0 .db $00,$00,$00,$00,$00,$00,$00,$00 .db $89,$08,$90,$89,$08,$90,$89,$00 .db $AB,$0A,$B0,$AB,$0A,$B0,$AB,$00 .end