123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472 |
-
- SINGLE_PLANE EQU ((OVERSCROLL_OFFSET+SCROLL_HEIGHT)*BPR) ;did have *2 on overscroll offset
- PLANE_INC EQU SINGLE_PLANE
- SCROLL_MEMORY EQU SINGLE_PLANE*12
- MAP_MEMORY EQU BIGGEST_MAP_X*BIGGEST_MAP_Y*3 ;main map word, alien map byte
- GAME_MEMORY EQU SCROLL_MEMORY+OVERSCROLL_OFFSET*BPR ; allow for scroll into memory
- COPY_STORE EQU SINGLE_PLANE
- NUMBER_OF_BLOCKS EQU 1180
- BLOCKS_MEMORY EQU (2*16*4)*NUMBER_OF_BLOCKS
- LOADER_PIC_SIZE EQU 8116 ;bytes
- FAST_MEM_MEMORY EQU MAP_MEMORY+COPY_STORE+BLOCKS_MEMORY+LOADER_PIC_SIZE
- MEM_CHIP EQU $02
- MEM_FAST EQU $04
- MEM_PUBLIC EQU $01 ;Chooses fast first, chip second
- MEM_CLEAR EQU $10000
- BIT_PLANE_DMA EQU $0100
- SPRITE_DMA EQU $0020
- BLITTER_NASTY EQU $0400
- ******************************************
- ***** BLANK OUT WORKBENCH *****
- ******************************************
- Blank_Out_Workbench
- *Display shareware message
-
- **set up pointers and variables so decompression is super quick
- move.l #blank_data,d0
- move.w d0,swsprite0l
- move.w d0,swsprite1l
- move.w d0,swsprite2l
- move.w d0,swsprite3l
- move.w d0,swsprite4l
- move.w d0,swsprite5l
- move.w d0,swsprite6l
- move.w d0,swsprite7l
- swap d0
- move.w d0,swsprite0h
- move.w d0,swsprite1h
- move.w d0,swsprite2h
- move.w d0,swsprite3h
- move.w d0,swsprite4h
- move.w d0,swsprite5h
- move.w d0,swsprite6h
- move.w d0,swsprite7h
- move.l #plane_positions,a2
-
- move.l memory_base,d0
- move.w d0,SHPLane1_Lo
- swap d0
- move.w d0,SHPlane1_hi
- swap d0
- move.l d0,(a2)
- add.l #80*256,d0
- move.w d0,SHPLane2_Lo
- swap d0
- move.w d0,SHPlane2_hi
- swap d0
- move.l d0,4(a2)
- add.l #80*256,d0
- move.l d0,8(a2)
- move.w d0,SHPLane3_Lo
- swap d0
- move.w d0,SHPlane3_hi
- move.l #$dff000,a6
- move.l #shareware_screen_copper,cop1lch(a6)
- clr.w copjmp1(a6)
- move.w #BIT_PLANE_DMA+$8000,dmacon(a6)
- move.w #SPRITE_DMA,dmacon(a6)
-
- moveq #0,d3 ;index into plane table
- move.w #640,d4 ;screen x size
-
- move.w #3*4,d7 ;number of planes ( *4 cos compare d3 with it - will inc by 4)
-
- move.w #640,d6 ; pixel count ( count down )
-
- move.w #640,d5 ; image loaded size
-
-
- move.l (a2,d3),a4 ;get first plane
-
- move.l #shareware_pic+4,a1
-
- move.w iff_cols(a1),num_of_cols
- move.l a1,colour_map_ptr
- add.l #size_of_iff_header,colour_map_ptr
-
- move.w iff_cols(a1),d0
- move.l pic_data_size(a1),size_of_pic
- ext.l d0
- asl d0
- add.l #size_of_iff_header,a1
- add.l d0,a1
- move.l a1,picture_data
-
- moveq #0,d0 ;clear
- move.l size_of_pic,d2
- jsr compressed_data ;Display pic
- move.w #80,text_bpr
- * bsr Display_System_Setup
- bsr Sync
- move.l colour_map_ptr,a0
- move.l #game_list,a1
- move.w #16-1,d0
- copy_share_cols
- move.w (a0)+,(a1)+
- dbra d0,copy_share_cols
- move.l #black_list,a0
- move.l #game_list,a1
- move.l #share_cols+2,a2
- move.w #16-1,d7
- move.l #store_text_nums,a3
- move.w #3,fade_speed
- jsr Fade_List_To_List
- *clear black list for later
- move.w #16-1,d0
- jsr Clear_Black_Colours
- rts
- FadeAfterLoading
- dc.w 0
-
- ******************************************
- ***** DISPLAY_SYSTEM_SETUP *****
- ******************************************
- Display_System_Setup
- move.l memory_base,a3
- move.w #1,default_colour
- tst.w chip_type
- beq.s bog_standard
- move.l #chip_type_string2,a4
- bra.s display_chip_string
- bog_standard
- move.l #chip_type_string1,a4
- display_chip_string
- move.w #230,d0
- move.w #80,d1
- jsr Display_Small_String_Skip
- move.l memory_base,a3
- cmp.w #ON,xtra_fx
- bne.s bog_standard_fx
- move.l #xfx_string2,a4
- bra.s display_fx_string
- bog_standard_fx
- move.l #xfx_string1,a4
- display_fx_string
- move.w #230,d0
- move.w #80+9,d1
- jsr Display_Small_String_Skip
- move.l memory_base,a3
- cmp.w #ON,xtra_music
- bne.s bog_standard_music
- move.l #music_string1,a4
- bra.s display_music_string
- bog_standard_music
- move.l #music_string2,a4
- display_music_string
- move.w #230,d0
- move.w #80+18,d1
- jsr Display_Small_String_Skip
- *find out fast and chip for interest
- move.l EXEC,a6
- move.l #MEM_CHIP,d1 ;chip
- jsr -$d8(a6) ;avail mem
- move.l d0,chip_free
- move.l EXEC,a6
- move.l #MEM_FAST,d1 ;chip
- jsr -$d8(a6) ;avail mem
- move.l d0,fast_free
- move.l #$dff000,a6 ;reset
- *hehe ready for some tacky code...
- clr.w d7
- move.l chip_free,score
- move.l #free_mem_string+25,a5
- jsr Convert_Score_To_String
- move.l fast_free,score
- move.l #free_mem_string+8,a5
- jsr Convert_Score_To_String
-
- move.l memory_base,a3
- move.l #free_mem_string,a4
- move.w #230,d0
- move.w #80+27,d1
- jsr Display_Small_String_Skip
- rts
-
- chip_free dc.l 0
- fast_free dc.l 0
- chip_type dc.w 0
- free_mem_string
- dc.b "FAST : 00000000 CHIP : 00000000",0
- even
- chip_type_string1
- dc.b "SYSTEM TYPE : 1000, 500, 500+ or 600",0
- even
- chip_type_string2
- dc.b "SYSTEM TYPE : 1200 OR BETTER",0
- even
-
- music_string1
- dc.b "IN GAME MUSIC : OPTIONAL ( DEFAULT ON )",0
- even
- music_string2
- dc.b "IN GAME MUSIC : NONE",0
- even
- xfx_string1
- dc.b "EXTRA SOUND FX : NO",0
- even
- xfx_string2
- dc.b "EXTRA SOUND FX : YES",0
- even
- ******************************************
- ***** STOP_SYSTEM *****
- ******************************************
- Stop_System
- movem.l a0-a6/d0-d7,-(sp)
- Ensure_Blit_Fin
- btst #14,dmaconr+$dff000
- bne.s Ensure_Blit_Fin
- move.l EXEC,a6
- jsr -132(A6) ;DISABLE tasking
- movem.l (sp)+,a0-a6/d0-d7
- rts
- ******************************************
- ***** ALLOCATE_GAME_MEMORY *****
- ******************************************
- Allocate_Game_Memory
- move.l EXEC,a6
- move.l #GAME_MEMORY,d0
- move.l #MEM_CHIP+MEM_CLEAR,d1 ;chip and clear
- jsr -198(a6) ;try
- tst.l d0
- bne allocated_mem
- rts ;otherwise quit
- allocated_mem
- move.l d0,Memory_Base
- add.l #OVERSCROLL_OFFSET*BPR,d0
- move.l d0,Plane1
- move.l d0,resetp1
- move.l d0,scroll_area
- add.l #SINGLE_PLANE*4,d0
- move.l d0,scroll_buff_area
- move.l d0,buff_plane1
- move.l d0,resetp2
- add.l #SINGLE_PLANE*4,d0
- move.l d0,copyback_area
- move.l EXEC,a6
- move.l #FAST_MEM_MEMORY,d0
- move.l #MEM_PUBLIC+MEM_CLEAR,d1 ;chip and clear
- jsr -198(a6) ;try
- tst.l d0
- bne allocated_fast_mem
- rts ;otherwise quit
- allocated_fast_mem
- move.l d0,Fast_Memory_Base
- move.l d0,buffer_map_memory
- add.l #(BIGGEST_MAP_X*BIGGEST_MAP_Y)*MAP_BLOCK_SIZE,d0
- move.l d0,buffer_alien_memory
- add.l #(BIGGEST_MAP_X*BIGGEST_MAP_Y),d0
- move.l d0,copy_store_area
- add.l #COPY_STORE,d0
- move.l d0,background_block_graphics
- add.l #BLOCKS_MEMORY,d0
- move.l d0,loader_pic_data
- rts
- ******************************************
- ***** SETUP_SYSTEM *****
- ******************************************
- Setup_System
- LEA CUSTOM,A6
- bsr Sync
- MOVE.W #0,BPLCON1(A6)
- move.w #$83a0,DMACON(a6)
- move.w #$000f,DMACON(a6)
-
- MOVE.L #COPPERL,COP1LCH(A6)
- MOVE.W COPJMP1(A6),D0
- rts
- ******************************************
- ***** SETUP_INT *****
- ******************************************
- Setup_Int
- move.l $6c,oldint
- move.l #darkint,$6c
- rts
- *********************************************
- ***** RELEASE_SYSTEM *****
- *********************************************
- Release_System
- movem.l a0-a6/d0-d7,-(sp)
-
- Ensure_Release_Blit_Fin
- btst #14,dmaconr+$dff000
- bne.s Ensure_Release_Blit_Fin
-
- MOVE.L EXEC,A6
- JSR -138(A6) ;ENABLE tasking
- movem.l (sp)+,a0-a6/d0-d7
- rts
-
- Fast_Memory_Base
- dc.l 0
- *********************************************
- ***** Replace_System *****
- *********************************************
- Replace_System
- move.l oldint,$6c
- move.w #$000f,dmacon(a6)
- move.w #$8000+BIT_PLANE_DMA,dmacon(a6)
- move.l EXEC,a6
- move.l #GAME_MEMORY,d0
- move.l Memory_Base,a1
- jsr -210(a6)
-
- move.l EXEC,a6
- move.l #FAST_MEM_MEMORY,d0
- move.l Fast_Memory_Base,a1
- jsr -210(a6)
- tst.l in_game_music
- beq.s no_music_mem_allocated
- move.l EXEC,a6
- move.l #IN_GAME_MUSIC_BUFFER,d0
- move.l in_game_music,a1
- jsr -210(a6) ; free only if allocated
- no_music_mem_allocated
- move.l EXEC,a6
- move.l Sound_Fx_Buffer_Size,d0
- move.l sfx_mem,a1
- jsr -210(a6) ; free only if allocated
- no_xtra_fx_allocated
- MOVE.L #graf_NAME,A1
- MOVEQ #0,D0
- JSR -552(A6) ;OPEN GRAPHICS LIBRARY
- MOVE.L D0,a4
- MOVE.W #$8020,DMACON+$dff000 ; sprites back
-
- move.l 38(a4),$dff080
- clr.w $dff088
- move.b #$9b,$bfed01
- rts
- graf_NAME dc.b "graphics.library",0
- even
-
- ******************************************
- ***** SETUP_COLOURS *****
- ******************************************
- setup_colours
-
- rts
-
- ******************************************
- ***** INSERT_COLOURS *****
- ******************************************
- Insert_Colours
- move.w #$180,d0
- move.w #16-1,d1
- col_loop
- move.w d0,(a0)+
- move.w (a1)+,(a0)+
- add.w #$2,d0
- dbra d1,col_loop
- rts
- ******************************************
- ***** INSERT_32COLOURS *****
- ******************************************
- Insert_32Colours
- move.w #$180,d0
- move.w #32-1,d1
- col_loop32
- move.w d0,(a0)+
- move.w (a1)+,(a0)+
- add.w #$2,d0
- dbra d1,col_loop32
- rts
- ******************************************
- ***** INSERT_SPRITE_COLOURS *****
- ******************************************
- Insert_Sprite_Colours
- move.w #$1A0,d0
- move.w #16-1,d1
- sp_col_loop
- move.w d0,(a0)+
- move.w (a1)+,(a0)+
- add.w #$2,d0
- dbra d1,sp_col_loop
- rts
- ******************************************
- ***** LOAD GAME BASICS *****
- ******************************************
- Load_Game_Basics
- bsr release_system
-
- jsr Construct_Map_Pages
- jsr Load_Loader_Pic
- jsr Load_Sound_Effects
- move.w #1,FadeAfterLoading
-
- bsr stop_system
- rts
- background_block_graphics dc.l 0
|