Jump to content

Photo

Loading with music...


49 replies to this topic

#26 xxl OFFLINE  

xxl

    Stargunner

  • 1,126 posts
  • Location:Rabka-Zdrój /Poland

Posted Tue Aug 13, 2013 1:29 PM

do not share a source of this example because it will be part of one of my next projects. but its rather simplem, in Fox's inflate lib replace:

lda (inputPointer),y
inw inputPointer

by this:

stx inputPointer
jsr xBIOS_GET_BYTE
ldx inputPointer
ldy #$00

so decompresor fetch data from current position in opened file


source of decompresor part of file on fly do like this:

				icl "inflate.asm"

				org $0600
init		
@			 lda vcount
				bne @-

				lda #$0f		; gr.15
				jsr $ef9c	 ; illegal call

				lda SAVMSC
				sta inflate_zp+2		; destination in memory
				lda SAVMSC+1
				sta inflate_zp+3
				jsr inflate			 ; now fetch data from current position in file

				jmp xBIOS_BINARY_LOAD ; this is nice,
										; do binary load from current position in file *

				ini init


				opt h-l+o+			 ; compressed data without binary file header
				ins 'mostek.df7'
				opt h+l+o+


				org $0600			 ; *
start		 jmp start			 ; run adres

				run start


#27 Heaven/TQA OFFLINE  

Heaven/TQA

    Quadrunner

  • 11,197 posts
  • Location:Baden-Württemberg, Germany

Posted Tue Aug 13, 2013 2:06 PM

Xxl... I mean the dli plus loading screen ;)

#28 Tezz OFFLINE  

Tezz

    River Patroller

  • 2,406 posts
  • Location:Manchester, England

Posted Tue Aug 13, 2013 2:50 PM

Is it the dli bars or the g2f loaders you're looking at Karolj?

Attached Files


Edited by Tezz, Tue Aug 13, 2013 2:50 PM.


#29 xxl OFFLINE  

xxl

    Stargunner

  • 1,126 posts
  • Location:Rabka-Zdrój /Poland

Posted Tue Aug 13, 2013 3:22 PM

I suggest use a much better and richer in features ver.1.5 http://xxl.atari.pl/download/xbios.atr

#30 Heaven/TQA OFFLINE  

Heaven/TQA

    Quadrunner

  • 11,197 posts
  • Location:Baden-Württemberg, Germany

Posted Wed Aug 14, 2013 12:39 AM

xxl, Tezz... thanks... exactly what I am looking for...

Tezz, while having DLIs running... is there anything I need to know or does xbios take the rest? So... more to say... f.e. for Gridrunner I could simply paste your G2F Screen before the main screen? INIT into the G2F and exit it with DLIs on? Or where is the magic? any simple ASM example?

it is for an production of mine and could be used for Gridrunner, too.

#31 Tezz OFFLINE  

Tezz

    River Patroller

  • 2,406 posts
  • Location:Manchester, England

Posted Wed Aug 14, 2013 4:29 AM

The g2f needs to be pulled apart and reworked for your ini segment.

We can load low with xbios...

; XBIOS Memory Map:

; $0000-$00ff
; $0100-$01ff
; $0200-$06ff
; $0700-$07ff ; buffer used during I/O - relocatable (can be anywhere)
; $0800-$0bff ; xBios
; $0c00-$cfff
; $d000-$d7ff ; Atari HW
; $d800-$ffff



initial dma off segment..

   	 org $c00

load        lda:cmp:req $14
        sei
        mva #0 nmien
        sta dmactl
        sta $22f
        mva #$ff portb
        rts

        ini load

;-----------------------------------------------------------------------------

        org $480

launch

; game setup/run procs   ...(I have mine exo packed so we have plenty of spare mem for the loading pic/intro


rework the g2f...


pic        mva #>pmg pmbase
        mva #3 pmcntl
        mva #0 colbak
        mva #$fe portb        ; *if required
        mwa #nmi $fffa

; depack rle pmg data here ..

        mva #$c0 nmien
        rts            ; end segment

;-----------------------------------------------------------------------------

fonts, screen ram, antic program, pmbase etc. below main prog exo


manually edit the dli ...

; dli saves/restores via self mod rather than zp. *Do not use x or y regs to save time... drop any unnessasary wsyncs

        .align $100        ; page align  (keep an eye on crossing pages if it's a long dli)

dli1        sta saveA1+1
        sta wsync
        mva #$14 color0
        mva #$2a color1
        mva #$86 color2
        mva #<dli2 dlinext
saveA1        lda #0
        rti
dli2        sta saveA2+1
        sta wsync
        mva #>fnt1 chbase
        mva #<dli3 dlinext
saveA2        lda #0
        rti

etc..


; vbl saves/restores via self mod again. only Acc is required

nmi        sta vbisaveA+1
        bit nmist
        bpl vbl
        jmp dli1
dlinext        equ *-2

vbl        sta nmist

; initial register changes here ..

*g2f sets all initial registers at vbl so move the registers that are not changed during dli to the pic setup instead

        mwa #antic dlptr
        mva #$3e dmactl
        mwa #dli1 dlinext

vbisaveA    lda #0
        rti

;----------------------------------------------------

; rle sprite data here

;----------------------------------------------------

        ini pic

;----------------------------------------------------

        org $xxx ; above intro loader

insert game exo data here

;----------------------------------------------------

        run launch

;----------------------------------------------------

Edited by Tezz, Wed Aug 14, 2013 4:33 AM.


#32 Tezz OFFLINE  

Tezz

    River Patroller

  • 2,406 posts
  • Location:Manchester, England

Posted Wed Aug 14, 2013 4:37 AM

I suggest use a much better and richer in features ver.1.5 http://xxl.atari.pl/download/xbios.atr

It's been a few months now :) Thanks, I'll grab the latest build.

#33 Tezz OFFLINE  

Tezz

    River Patroller

  • 2,406 posts
  • Location:Manchester, England

Posted Wed Aug 14, 2013 4:55 AM

Here's the DLI raster bars with music player and picture depacking during disk load...

The music player is lifted from the Bitter Reality demo loader btw, it was ideal for putting an example together.
XBIOS takes care of AUDCTL.

xIRQEN		  equ $bf6	    ; IRQ usera  xx00 0xxx
xAUDCTL		 equ $bf8	    ; dla AUDCTL

xBIOS						   equ $800
xBIOS_MAGIC					 equ xBIOS
xBIOS_VERSION				   equ xBIOS+$02
xBIOS_RENAME_FILE			   equ xBIOS+$03
xBIOS_LOAD_FILE				 equ xBIOS+$06
xBIOS_OPEN_FILE				 equ xBIOS+$09
xBIOS_LOAD_DATA				 equ xBIOS+$0c
xBIOS_WRITE_DATA			    equ xBIOS+$0f
xBIOS_LOAD_DIR				  equ xBIOS+$12
xBIOS_GET_BYTE				  equ xBIOS+$15
xBIOS_PUT_BYTE				  equ xBIOS+$18
xBIOS_FLUSH_BUFFER			  equ xBIOS+$1b
xBIOS_SET_LENGTH			    equ xBIOS+$1e
xBIOS_NOTE					  equ xBIOS+$21
xBIOS_POINT					 equ xBIOS+$24
xBIOS_SET_PARAMS			    equ xBIOS+$27
xBIOS_SET_CURRENT_DEVICE	    equ xBIOS+$2A
xBIOS_CHANGE_DIRECTORY		  equ xBIOS+$2D
xBIOS_BINARY_LOAD			   equ xBIOS+$30

bars		    equ $00
barcol		  equ $f0            ;  8 bytes
speed		   equ $fb
HTD_IN		  equ $fc ; fd
zegar		   equ $fe
line_count	  equ $ff
tlo			 equ $0600

font_base	   equ $e000

        opt h+o+l+

        icl 'equates'

        org $c00

antic        
		    :1   .byte $70
				 .byte $40+$0d+$80,<ekr,>ekr
		    :100 .byte $0d+$80
			    .byte $10,$06+$40,<text,>text
			    .byte $41,<antic,>antic

sine        dta sin(46,46,128,0,255)

ekr	 equ $2000

text		   .byte d'test ',d'TEST test	  '*


start        sei
        lda #0
			    sta nmien
        sta dmactl
			    sta line_count
			    
			    tax
@			   sta $00,x
			    dex
			    bne @-
			    
			    lda #$ff
			    ldy #$2f
_nxte1		  sty _nxte+2
_nxte		   sta $2000,x
			    dex
			    bne _nxte
			    dey
			    cpy #$1f
			    bne _nxte1
			    
        lda #$fe
			    sta portb
			    jsr copy_fnt
        lda #<NMI
			    sta $fffa
			    lda #>NMI
			    sta $fffb
        lda #$18
        sta barcol
        lda #$38
        sta barcol+1
        lda #$58
        sta barcol+2
        lda #$78
        sta barcol+3
        lda #$98
        sta barcol+4
        lda #$b8
        sta barcol+5
        lda #$d8
        sta barcol+6
        lda #$f8
        sta barcol+7
        mwa #antic dlptr
        lda #>font_base
			    sta chbase
			    ldx #0   ;94 ;23
barbackgnd    txa ;lda #4            ; reset logo background colour on all 24 scanlines
			    lsr @
			    lsr @
			    lsr @
			    ;lsr @
			    ora #$01
			    sta bars,x
			    sta tlo-6,x
        inx
			    cpx #100
        bne barbackgnd
@			   sta tlo-6,x
			    inx
			    cpx #106
			    bne @-
			    
			    lda #$0f
			    sta colpf0

@			   lda vcount
			    bne @-
        mva #34 dmactl
        mva #$C0 nmien
			    
rle_depacker
loop		   jsr getByte
			    cmp #0
			    beq stop
			    lsr @
			    tay
lp0   		 jsr getByte
lp1   		 sta $2000
outputPointer    equ *-2
			    inw outputPointer
			    dey
_bpl		    bmi loop

			    bcs lp0
			    bcc lp1

getByte   		 sty _sY+1
			    php
			    jsr xBIOS_GET_BYTE
_sY			 ldy #$ff
			    plp
			    rts

stop		    jmp xBIOS_BINARY_LOAD
;			    rts
			    


copy_fnt	    ldx #3
			    ldy #0
_cfont		  inc portb	   ; ff
_csrc		   lda $e000,y
			    dec portb	   ; fe
_cdst		   sta font_base,y
			    dey
			    bne _cfont
			    inc _csrc+2
			    inc _cdst+2
			    dex
			    bpl _cfont
			    rts
			    
; -----------------------------------
dli1        sta saveA1+1
			    stx saveX1+1
			    ldx line_count
        lda bars,x
			    inc line_count
        sta wsync
        sta colbak
			    
			    lda tlo,x ;#$04
        sta bars,x
saveA1		  lda #0
saveX1		  ldx #0
        rti

; -----------------------------------

NMI        bit nmist
        bpl VBL
        jmp dli1
dli_select    equ *-2

VBL        sta vbisaveA+1
        stx vbisaveX+1
        sty vbisaveY+1
 
			    jsr xBIOS_NOTE
			    sty HTD_IN
			    stx HTD_IN+1

			    ldy #16
			    lda HTD_IN+1
			    jsr puthex
			    lda HTD_IN
			    jsr puthex

			    inc zegar
 
			    lda #0
			    sta line_count

			    ldy #3				  ; 7
_nxtbar        lda zegar
			    clc
			    adc przesuniecie,y
			    tax
        lda sine,x
			    tax
        lda barcol,y		  
        sta bars,x		  ;1000
        sta bars+6,x	    ;1000
        ora #2
        sta bars+1,x	    ;1010
        sta bars+5,x	    ;1010
        eor #6
        sta bars+2,x	    ;1100
        sta bars+4,x	    ;1100
        ora #2
        sta bars+3,x	    ;1110

			    dey
			    bpl _nxtbar

        lda speed        ; simple audio seq
        bne wp

loadpat        ldx #0
        lda pat,x
        bmi pass
        asl @
        asl @
        asl @
        asl @
        sta wp+1
pass        inx
        txa
        and #$3f
        sta loadpat+1

wp        ldx #0
        lda ins,x
        sta audc1
        lda frq,x
        sta audf1
        inc wp+1

        dec speed
        bpl pass2
        lda #5
			    sta speed
wp1        lda #$20		   ;0010 0000
        sta pass2+1
        eor #$60		   ;0110 0000
        sta wp1+1

pass2        ldx #0
        lda ins,x
        sta audc2
        inc pass2+1



vbisaveA    lda #0
vbisaveX    ldx #0
vbisaveY    ldy #0
        rti

puthex		  pha
			    lsr @
			    lsr @
			    lsr @
			    lsr @
			    jsr nibble
			    pla
			    and #$0f
nibble		  cmp #$0a
			    sed
			    adc #$10
			    cld
			    sta text,y
			    iny
			    rts


przesuniecie    .byte 42,36,30,24,18,12,6,0


ins        dta $0F,$AF,$AC,$A7,$A2,$00,$04,$A3
        dta $22,$21,$A1,$00,$00,$00,$00,$00
			    
        dta $AF,$AF,$09,$07,$05,$04,$04,$03
        dta $03,$03,$02,$02,$02,$01,$01,$00
			    
        dta $87,$84,$83,$82,$81,$00,$00,$00
        dta $00,$00,$00,$00,$00,$00,$00,$00
			    
        dta $84,$84,$84,$84,$84,$84,$83,$83
        dta $83,$83,$82,$82,$81,$81,$00,$00
			    
        dta $83,$82,$81,$81,$81,$00,$00,$00
        dta $00,$00,$00,$00,$00,$00,$00,$00

frq        dta $04,$C0,$D0,$E0,$F0,$00,$04,$C0
        dta $D0,$E0,$F0,$00,$00,$00,$00,$00
        dta $98,$A8,$03,$03,$03,$03,$03,$03
        dta $03,$03,$03,$03,$03,$03,$03,$03
        dta $00,$00,$00,$00,$00,$00,$00,$00
        dta $00,$00,$00,$00,$00,$00,$00,$00
        dta $00,$00,$00,$00,$00,$00,$00,$00
        dta $00,$00,$00,$00,$00,$00,$00,$00

pat        dta $00,$80,$00,$80,$01,$80,$00,$00
        dta $80,$00,$00,$80,$01,$80,$03,$80
        dta $00,$80,$00,$80,$01,$80,$02,$02
        dta $00,$80,$01,$01,$80,$00,$03,$80
        dta $00,$80,$00,$80,$01,$80,$00,$00
        dta $80,$00,$00,$80,$01,$80,$03,$80
        dta $00,$00,$00,$80,$01,$00,$00,$80
        dta $00,$80,$01,$01,$80,$00,$01,$00


        ini start        ; nmi loader intro segment

  opt h-
  org *
			    ins 'loading.rle'
  opt h+

        org $3000

;			    ins 'loading.mic',0,$fc8
			    
    :$7000    .byte $ff        ; create 28k for false loading of data

run_adr        jmp run_adr        ; endless loop

			    run run_adr



#34 Heaven/TQA OFFLINE  

Heaven/TQA

    Quadrunner

  • 11,197 posts
  • Location:Baden-Württemberg, Germany

Posted Mon Oct 14, 2013 6:39 AM

@Tezz

 

I am throwing stuff together for Silly Venture and wanted to use xbios... so actually... what do I need to do in terms of using xbios?

 

simply use the ATR? and put my demo parts on the disc? can I hide the directory or at least put all data files into folders?

 

Sorry, but XXL's descritptions are too advanced for me and the translator does not work properly :D

 

or alternative is to have 1 huge XEX file where each part exits with RTS ("back to dos").



#35 xxl OFFLINE  

xxl

    Stargunner

  • 1,126 posts
  • Location:Rabka-Zdrój /Poland

Posted Mon Oct 14, 2013 9:02 AM

rather translator does not work properly. what do you want me to explain about using xB?
 
> Can I hide the directory or at least put all data files into folders?
 
yes, you can put all data files into subdirectory, but why hide directory? it is possible, but regular DOS will not be able to copy these files.


#36 Heaven/TQA OFFLINE  

Heaven/TQA

    Quadrunner

  • 11,197 posts
  • Location:Baden-Württemberg, Germany

Posted Mon Oct 14, 2013 9:16 AM

xxl:

 

in an ideal world my scenario:

 

booting ATR will boot automaticly xbios. after loading xbios it will load my files automaticly... and in my demo (maybe 1 long exe-file) I will exit each parts simply with RTS and xbios continues to load the segments until next INI/RUN as normal game-dos will do.

 

why hiding the directory? because it is a demo and will only run with xbios help? --> look at the Joyride-Demo-Directory ;=)



#37 Tezz OFFLINE  

Tezz

    River Patroller

  • 2,406 posts
  • Location:Manchester, England

Posted Mon Oct 14, 2013 9:18 AM

as xxl says you have every option with his xb, you can have individual files in subdirectories, you can also autorun to avoid displaying the xb menu, or like you said you can create a single segmented executable :)

 

btw .. @ xxl what did you use to lz4 pack your gfx data?



#38 Heaven/TQA OFFLINE  

Heaven/TQA

    Quadrunner

  • 11,197 posts
  • Location:Baden-Württemberg, Germany

Posted Mon Oct 14, 2013 9:18 AM

and I want to use xbios because of the 61kb feature and not using IRQ/NMIs so I can use DLIs ;)

 

and copy by DOS I don't care as in a "oldscool" world it will be put on a 5,25 Disc anyway... to be copied by sector copy ;)



#39 Tezz OFFLINE  

Tezz

    River Patroller

  • 2,406 posts
  • Location:Manchester, England

Posted Mon Oct 14, 2013 9:19 AM

...maybe 1 long exe-file, I will exit each parts simply with RTS and xbios continues to load the segments until next INI/RUN as normal game-dos will do.

Yes, exactly



#40 Tezz OFFLINE  

Tezz

    River Patroller

  • 2,406 posts
  • Location:Manchester, England

Posted Mon Oct 14, 2013 9:26 AM

and I want to use xbios because of the 61kb feature and not using IRQ/NMIs so I can use DLIs ;)

It really is the best option, I'm using it for everything I'm working on. Thanks to the xb library we no longer need to write our own custom loaders.

 

With multi-loads without any gfx display/music duing loading etc. I will also create executables for modern high speed storage devices.



#41 Creature XL OFFLINE  

Creature XL

    Dragonstomper

  • 904 posts
  • Location:Hannover.De

Posted Mon Oct 14, 2013 9:43 AM

It really is the best option, I'm using it for everything I'm working on. Thanks to the xb library we no longer need to write our own custom loaders.

 

With multi-loads without any gfx display/music duing loading etc. I will also create executables for modern high speed storage devices.

 

Only disadvantage is that you have to use ATR and not XEX anymore. :(

However, for my next game (if ever) I use xBIOS as well. maybe even for the ExtendedEdition of "HeliCave" for savegames.



#42 xxl OFFLINE  

xxl

    Stargunner

  • 1,126 posts
  • Location:Rabka-Zdrój /Poland

Posted Mon Oct 14, 2013 10:07 AM

booting ATR will boot automaticly xbios. after loading xbios it will load my files automaticly... 
 
 
this automatically boot xB.
 
or if you want make your own .atr up to 16MB with subdirectories, here are boot loaders and xB:
 
  
use what you want
 
now, copy your demo as "xautorun" - this is autorun filename for xbios
  
 
> and in my demo (maybe 1 long exe-file) I will exit each parts simply with RTS and xbios continues to load the segments until next INI/RUN as normal game-dos will do.
 
 
yes, of course. if you "kill" stack then use "jmp xBIOS_BINARY_LOAD" instead "rts" to load next part. OS can by off and all zeropage utilize by your program all the time. you can move back/forward "file pointer" and boot from different part of your file either.
 
 
> why hiding the directory? because it is a demo and will only run with xbios help? --> look at the Joyride-Demo-Directory ;=)
 
as you want... xB use all 256 chars for file/directory names - use "xBIOS_RENAME_FILES" ;-) or... delete VTOC or... use non standard directory place ;-)...  there are many possibilities
 
 
> what did you use to lz4 pack your gfx data?
 
for windows
 
> I will also create executables for modern high speed storage devices.
 
and cartridges...
 
 
> maybe even for the ExtendedEdition of "HeliCave" for savegames.
 
look at how DeathchaseXE save scores :-) in DC file - you can rename or move game to another directory or even on cart and this function will work.

Edited by xxl, Mon Oct 14, 2013 10:10 AM.


#43 xxl OFFLINE  

xxl

    Stargunner

  • 1,126 posts
  • Location:Rabka-Zdrój /Poland

Posted Mon Oct 14, 2013 10:32 AM

 

Only disadvantage is that you have to use ATR and not XEX anymore. :(

 

no, you can put your game and xbios.com together in one subdirectories on disk and start it from regular DOS.



#44 Heaven/TQA OFFLINE  

Heaven/TQA

    Quadrunner

  • 11,197 posts
  • Location:Baden-Württemberg, Germany

Posted Mon Oct 14, 2013 12:42 PM

sounds really cool...

 

@Tezz

 

what do you mean "creating exe" files for modern high speed devices?

 

@xxl

 

btw. how is the SIO working internally? as you are not using any IRQ/NMI how are you talking to all the different devices? by "polling" pokey? but how do you get the different speeds then?



#45 Heaven/TQA OFFLINE  

Heaven/TQA

    Quadrunner

  • 11,197 posts
  • Location:Baden-Württemberg, Germany

Posted Mon Oct 14, 2013 12:43 PM

@xxl

 

and is there anything I need to know regarding DLIs using while loading?



#46 Tezz OFFLINE  

Tezz

    River Patroller

  • 2,406 posts
  • Location:Manchester, England

Posted Mon Oct 14, 2013 1:30 PM

@Tezz

 

what do you mean "creating exe" files for modern high speed devices?

Just regular segmented executables and/or separate files without anything actively running during loading as we are able to do disk based at standard 19200 baud.



#47 xxl OFFLINE  

xxl

    Stargunner

  • 1,126 posts
  • Location:Rabka-Zdrój /Poland

Posted Mon Oct 14, 2013 3:42 PM

and is there anything I need to know regarding DLIs using while loading?

 

with standard speed, use it every second line not often.



#48 Tezz OFFLINE  

Tezz

    River Patroller

  • 2,406 posts
  • Location:Manchester, England

Posted Mon Oct 14, 2013 4:21 PM

thanks xxl, I added the LZ4 compressed picture to the Chimera NTSC fixed version tonight.

 

I'm working on finishing off Chimera+ at the moment which will include a complete rewrite of the screen and sprite drawing procedures with the method Shahid used on the other 8-bit platforms which will significantly optimise game play performance. I'm adding in the missing features also such as the samples and the Rob Hubbard music with a recreation of the c64 title screen, directional joystick controls, independently coloured spaceman sprite and the hi-res loading picture that was included on the other platforms also.


Edited by Tezz, Mon Oct 14, 2013 4:24 PM.


#49 Heaven/TQA OFFLINE  

Heaven/TQA

    Quadrunner

  • 11,197 posts
  • Location:Baden-Württemberg, Germany

Posted Tue Oct 15, 2013 12:37 AM

Tezz... regarding the LZ4 picture... well... ;) are you sure to build the screen up like loading from tape scanline by scanline? ;)



#50 Tezz OFFLINE  

Tezz

    River Patroller

  • 2,406 posts
  • Location:Manchester, England

Posted Tue Oct 15, 2013 11:39 AM

Tezz... regarding the LZ4 picture... well... ;) are you sure to build the screen up like loading from tape scanline by scanline? ;)

yea I think it's ok to see the screen progress on during loading as it was most often with the Speccy and c64, it's something slightly more interesting then having a blank screen until the pic has fully loaded I guess. The cassette loader (iirc) progressed on shifting data from the centre of the display. It wasn't often for cassette releases to have a loading pic on the A8.

This will just be for this ntsc patched version of the original release of course as the revamp will have the rastered hi-res pic in a segmented and packed executable.






0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users