Return to Phobos

Moderator: Rockford

Benutzeravatar
DjayBee
Beiträge: 625
Registriert: 17.08.2021 04:02
Has thanked: 384 times
Been thanked: 175 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von DjayBee »

Prodehl hat geschrieben:
16.03.2022 22:02
Programmstart jetzt bei 2048 ($800)
Wenn du es aus dem DOS starten und ggf. wieder dorthin zurückkehren willst, ist das immer noc hviel zu niedrig.
Du solltest dann nicht unter $2000 beginnen.

Benutzeravatar
pps
Beiträge: 529
Registriert: 18.06.2021 23:05
Has thanked: 115 times
Been thanked: 205 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von pps »

Schaue Dir mal das uDOS von @Dietrich an. Dort hast Du zwar keine DOS Oberfläche, aber es bietet grundlegende Funktionen, die so ein Spiel benötigt und bietet möglichst geringe Speichernutzung. Habe gerade nicht den genauen Punkt im Kopf... So etwa ab $940 kann man da ein Programm starten lassen.
PP´s of STARSOFTBerlin__________github|meine Webseite|Demozoo

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Dr. Irata »

Ich habe mich in der Tat noch nicht damit beschäftigt und lediglich am Anfang mal ausprobiert, ob sich das Programm generell auf meinem Atari 130 XE starten lässt. Ich programmiere ja unter Eclipse / MADS und da wird dann eine xex-Datei generiert. Die läßt sich via Fujinet einfach laden. Wie aber bekomme. ich das auf eine normale 5 1/2 Zoll Diskette, wo das startbare Programm ist und wo dann das Programm einfach gestartet wird. Ins DOS zurück müsste man nicht... das ging doch bei den ganzen Spielen früher in der Regel auch nicht!

Benutzeravatar
Andars
Beiträge: 132
Registriert: 12.01.2022 17:49
Has thanked: 24 times
Been thanked: 9 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Andars »

Mit dem Disk-Explorer vom Altirra in eine atr schieben und dann via SIO2PC auf eine physikalische Disk kopieren.
Oder mit MakeATR.
MakeATR.zip
(53.62 KiB) 74-mal heruntergeladen

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Dr. Irata »

lieben Dank ersteinmal... gibt es da auch was für Mac??

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Dr. Irata »

also das uDOS habe ich nirgends gefunden 🙈

Online
Benutzeravatar
Kveldulfur
Beiträge: 624
Registriert: 17.08.2021 02:32
Has thanked: 237 times
Been thanked: 163 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Kveldulfur »

Hallo!

Hier wird Dir geholfen:
viewtopic.php?p=4814#p4814

Grüße
Janko

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Dr. Irata »

Lieben Dank!!
Brauche ich denn überhaupt das DOS??
Ich muss doch nur eine startfähige Diskette mit meinem Programm erstellen (wie das geht weiß ich noch nicht) - wo dann am Anfang irgendwo steht, wohin in den Speicher das Programmgeladen wird und wo dann wohl auch der Start erfolgen soll...?!

Online
Benutzeravatar
Kveldulfur
Beiträge: 624
Registriert: 17.08.2021 02:32
Has thanked: 237 times
Been thanked: 163 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Kveldulfur »

Hallo!

Es kommt ein wenig darauf an, was Du vor hast.
Eine Weitergabe ist sicherlich einfacher, wenn man es mit anderen Programmen von einem DOS heraus aufrufen kann.

Wenn Du nach hinten heraus noch 15kb frei hast, spricht doch nichts gegen eine kompatible Start-Adresse?

Grüße
Janko

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Dr. Irata »

Die übrigen 15 kB sind ja mit Startadresse C00 gerechnet und ich habe für den gesamten geschätzten Rest der Landschaft bereits Platzhalter drin - d.h. ich brauche noch ein paar KB für Sound und Code... wenn alles fein ist, dann werde ich den Programmstart so gestalten, daß ein DOS bequem reinpasst!
Liebe Grüße

Benutzeravatar
DjayBee
Beiträge: 625
Registriert: 17.08.2021 04:02
Has thanked: 384 times
Been thanked: 175 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von DjayBee »

Prodehl hat geschrieben:
17.03.2022 14:14
Brauche ich denn überhaupt das DOS??
Ich muss doch nur eine startfähige Diskette mit meinem Programm erstellen
Das ist im Prinzip korrekt.
Für eine Bootdiskette benötigst du nur im ersten Sektor einen kleinen Header von sechs Byte, der dem Atari sagt, wieviele Sektoren er booten soll, wohin im RAM die geladen werden sollen und wo die (endgültige) Startadresse liegt.
"endgültig" weil nach dem Bootvorgang automatisch an Ladeadresse+6 zur Initialisierung gesprungen wird. Nur wenn das Init mittels RTS beendet wird, erfolgt der Sprung zur Startadresse aus dem Header.
Das ist ein bisschen wie beim DOS mit RUNAD $2e0 und INITAD $2e2.


ABER: Häufig wird ein Programm nicht an ein Stück assembliert, sondern ist verteilt auf verschiedene Bereiche im RAM, die du vorher durch org-Befehle definiert hast.
Das DOS ist in der Lage, diese Blöcke aus einer XEX-Datei an die jeweils richtige Stelle zu laden. Hast du aber eine Bootdiskette musst du dich mit einem eigenen Lader darum komplett selber kümmern, dass die Daten aus den Sektoren an die richtigen Stellen im RAM kommen.
Und vorher musst du aus deiner XEX-Datei diese Blöcke rausschneiden und auf der Bootdiskette entsprechend verteilen.

Deshalb ist echt vorteilhaft, ein DOS zu verwenden.

Benutzeravatar
pps
Beiträge: 529
Registriert: 18.06.2021 23:05
Has thanked: 115 times
Been thanked: 205 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von pps »

Mit der Option f kann man mit MADS ein komplett hintereinander assembliertes File erzeugen. So geht auch direkt eine eigene Bootdisk. Das habe ich bei der Diskversion von runfast so gemacht. Das komplette atr ist mit MADS erstellt. Am Sonntag kann ich da eventuell etwas source code zu liefern.

Aber ein "normales" com File (oder auch xex) ist letzten Endes einfacher für die Leute zu handhaben.
PP´s of STARSOFTBerlin__________github|meine Webseite|Demozoo

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Dr. Irata »

das hört sich interessant an!! Bin gespannt auf Sonntag!!
Danke schon mal an alle!
LG
Peter

Benutzeravatar
LarsImNetz
Beiträge: 152
Registriert: 24.08.2021 18:27
Has thanked: 109 times
Been thanked: 80 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von LarsImNetz »

Als kleines DOS, nebst minimalistischer Oberfläche bietet sich auch LiteDOS an: http://mr-atari.com/Mr.Atari/LiteDOS/ da kann man seine Programme ab $1000 starten lassen.

Benutzeravatar
pps
Beiträge: 529
Registriert: 18.06.2021 23:05
Has thanked: 115 times
Been thanked: 205 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von pps »

Sorry, hatte auch heute ordentlich zu tun. Aber jetzt hatte ich mal ein paar Minuten Zeit und hier der versprochene Source Code:

Code: Alles auswählen

/*
16 bars boot disc based on 510b+ from nyd2022
*/

;	@com.wudsn.ide.asm.hardware=ATARI8BIT
;	@com.wudsn.ide.asm.outputfileextension=.atr

	opt l-
;---- ATARI addresses
hposp0	=	$D000
hposp1	=	$D001
hposp2	=	$D002
hposp3	=	$D003
sizep0	=	$D008
sizep1	=	$D009
sizep2	=	$D00A
sizep3	=	$D00B
trig0	=	$D010
trig1	=	$D011
colpm0	=	$D012
colpm1	=	$D013
colpm2	=	$D014
colpm3	=	$D015
colbak	=	$D01A
color2	=	$D018
gtictl	=	$D01B
pmcntl	=	$D01D
consol	=	$D01F
skctl	=	$D20F
dmactl	=	$D400
pmbase	=	$D407
wsync	=	$D40A
nmien	=	$D40E
;---
	opt l+

compileto	equ $2000
sectors	equ ((fin-compileto)/128)+1

	opt f+				;Activate fill mode
	opt h-				;no headers
;;; ATR disk header
        .word $0296, $8, $80
:10	.he 00
	org compileto
;--------------------------- boot init
	.proc boot
	.he 00		;always 0
	dta b(sectors)	;how many sctors to load
	.wo boot	;load address
	.wo init	;init address (seems not to be used)
	jmp start
;	mva #$24 710
	.endp
;--------------------------- boot init end
	.proc init
;you can start an intro here
	rts
	.endp
;---------------------------
	.zpvar	.byte ct,wt,mx,shape,rega,regx,posp1,posp0

ri	equ $a0			;needs 16 bytes
pos	equ $b0			;needs 16 bytes
col	equ $c0			;needs 16 bytes
pmg	equ $2000
p0	equ $2000+$400
p1	equ $2000+$500
p2	equ $2000+$600
p3	equ $2000+$700

;---------------------
	.local DL
	.he 70 80
:12	.he 70			;have to use it on boot disc again
;	.ds 96			;mega cheat :) 12 times $70 or just 96 times 0 if area is clear
	.he 42
	.wo txt
	.he 41
	.wo DL

txt	dta d'NYD 2022',d'  16bars_510b+  '*,d' by PPs '

	.endl
;---------------------
	.local dli
	sta rega
	stx regx
	mva posp0 hposp0
	mva posp1 hposp1
	dec posp0
	inc posp1

	mva #%00111001 dmactl	;set screen width (32b,dma,players)
	sta wsync
	mva #$21 gtictl
;--- additional pm
	rol			;$42	red
	sta colpm2
	rol			;$84	blue
	sta colpm3
;--- additional pm
;stripes
	ldx #0
@	lda start.area,x
	sta colbak
	and #$7f
	sta colpm0
	sta colpm1
	lda shape
	ror
	ror
	ror
	sta color2
	sta wsync
	inx
	cpx #210
	bne @-
	lda #0
	sta colpm0
	sta colpm1
	ldx regx
	lda rega
	rti
	.endl
;---------------------
	.proc start
	.proc main
	jsr clear_area
	mwa #DL 560
	sta pmbase		;-> high byte is $20 ;)
	sta 513			;-> high of DLI is $20, too ;)
	mva <dli 512
;--- set colors			;.he 00 10 20 30 40 50 60 70 80 90 a0 b0 c0 d0 e0 f0
	.local setcol
	ldx #15
lx	lda #$f0
	sta col,x
	sub #$10
	sta lx+1
	dex
	bpl lx
	.endl
;---
	stx shape		;$ff
	stx wt
	stx ct
;---------------------
	.local set_pm
	txa			;x and a @$ff
@	sta p0,x
	sta p1,x
	dex
	bne @-
;--- additional pm
	ldx #7
;	lda #$f0
@	sta p2+113,x
	sta p3+113,x
	dex
	bpl @-
	mva #$70 posp0
	sta posp1
	mva #$40 hposp2
	mva #$a0 hposp3
;--- additional pm
	.endl
;---------------------
	mva #3 sizep0
	sta sizep1
;--- additional pm
	sta sizep2
	sta sizep3
;--- additional pm
	sta pmcntl		;enable players and missiles
	mva #$c0 nmien		;DLI + VBI on
lp
;Test ob Ende
/*	lda trig0
	beq @+
	lda trig1
	beq @+
	lda skctl
	and #$04
	beq @+
	lda consol
	and #1
	bne noend
@	jmp $e477		;cold reset
noend
*/	dec wt
	lda wt
	bpl out
	mva #2 wt
	sta 77
	dec ct
out
;---------------------
	.local stripes
;run thru the 16 stripes
	ldx #15
	stx mx
lp_str
	lda ri,x
	beq hoch
runter
	lda pos,x
	cmp #196
	beq change_up
;runter geht noch
	inc pos,x
	lda pos,x
	tay
	jsr copyshape
	jmp next
change_up			;up again
	ldx mx
	dec ri,x
hoch
	lda pos,x
	beq change_down
;hoch geht noch
	dec pos,x
	lda pos,x
	tay
	jsr copyshape
	jmp next

change_down			;down again
	ldx mx
	inc ri,x
	jmp runter
next
	dec mx
	ldx mx
	bpl lp_str
	.endl
;---------------------
	lda ct
	bne lp
	dec ct			;set back 2 $ff
	jsr chg_shape
	jmp lp
	.endp
;---------------------
	.local copyshape
;first
	lda #0
	sta area,y
;1
	lda col,x
	sta area+1,y
	sta area+12,y
;2
	lda col,x
	ora #2
	sta area+2,y
	sta area+11,y
;3
	lda col,x
	ora #4
	sta area+3,y
	sta area+10,y
;4
	lda col,x
	ora #6
	sta area+4,y
	sta area+9,y
;5
	lda col,x
	ora #8
	sta area+5,y
	sta area+8,y
;6
	lda col,x
	ora #10
	sta area+6,y
	sta area+7,y
;last
	lda #0
	sta area+13,y
	rts
	.endl
;---------------------
	.local clear_area
	ldx #15
@	lda posi,x
	sta pos,x
	lda #1
	sta ri,x
	dex
	bpl @-
	inx
	txa			;0
@	sta area,x
	dex
	bne @-
	rts
;----------
posi	.he 00 0c 18 24 30 3c 48 54 60 6c 78 84 90 9c a8 b4
	.endl
;---------------------
	.local chg_shape
	jsr clear_area
	inc shape
	lda shape
	cmp #4
	beq sixteenth
	cmp #3
	beq eighth
	cmp #2
	beq quarter
	cmp #1
	beq half
;all				;was set during clear_area
	rts
half
	ldx #7
	lda #0
@	sta ri+8,x
	dex
	bpl @-
	rts
quarter
	ldx #4
	lda #0
@	sta ri+4,x
	sta ri+12,x
	dex
	bpl @-
	rts
eighth
	ldx #1
	lda #0
@	sta ri+2,x
	sta ri+6,x
	sta ri+10,x
	sta ri+14,x
	dex
	bpl @-
	rts
sixteenth
	ldx #15
	lda #0
@	sta ri+1,x
	dex
	dex
	bpl @-
	stx shape		;reset shape color value to initial $ff
	rts
	.endl
;---------------------
area				;area of stripes
;	.ds 210			;not needed on disc boot
;---------------------
	.endp
;---------------------------
fin
	.if <fin < 128
;---
	.rept 128-<fin	;Sektor noch auffüllen
	.he 00
	.endr
;----
	.else
;----
	.rept 256-<fin
	.he 00
	.endr
;----
	.endif
;---------------------------
	.rept 359-sectors	;SD disc will be our goal
:128	.he 00
	.endr
;---------------------------
;sector 360 := VTOC
;---------------------------
	.he 02			;DOS 2 DIR
;	.he d0 02		;720 Sectors disc
	.he c5 02
	.he 00 00		;0 free sectors
	.he 00 00 00 00 00	;unused space in VTOC
;10-99 -> mark all as used
:90	.he 00
;100-127 -> unused
:28	.he 00
;---------------------------
;Sector 361-368 := DIR
;---------------------------
	.he 22			;file locked + inuse
	.he 00 00		;file size in sectors
	.he 00 00		;start sector number
	dta '-----------'

	.he 22			;file locked + inuse
	.wo sectors		;file size in sectors
	.he 01 00		;start sector number
	dta '16 bars PPs'

	.he 22			;file locked + inuse
	.he 00 00		;file size in sectors
	.he 00 00		;start sector number
	dta '-----------'

	.rept 5
:16	.he 00			;no file
	.endr

	.rept 7
:128	.he 00
	.endr
;---------------------------
	.rept 352
:128	.he 00
	.endr
Es wird hier eine 720kB "Diskette" direkt mit dem Assembler erzeugt, die das eigene Programm bootet. Es wird auch eine Directory angelegt, die im DOS 2.5 und auch im BiboDos angezeigt wird. Ich habe aber frech die komplette Diskette als belegt markiert und auch nur die Dateilänge des eigenen Programms eingetragen.

Das atr hat aber noch ein paar Probleme - irgendwann untersuche ich das auch mal genauer.

Irgendwo ist es noch nicht komplett kompatibel - zumindest meckern alle Tools am PC. Das atr startet aber problemlos direkt am ATARI (von SD oder auch vom USB-Stick - Diskdrives gehen bei mir momentan beide nicht mehr :( ) und im Emulator.

Möchtest Du keine Directory schreiben, nimm Folgendes (ab fin):

Code: Alles auswählen

fin
;---------------------------
	.if <fin < 128
;---
	.rept 128-<fin	;Sektor noch auffüllen
	.he 00
	.endr
;----
	.else
;----
	.rept 256-<fin
	.he 00
	.endr
;----
	.endif
;---------------------------
;	.rept 1040-sectors	;noch weitere 1039 Sektoren (MD)
	.rept 720-sectors	;SD
:128	.he 00
	.endr
discboot_16bars_510b+.atr
(90.02 KiB) 55-mal heruntergeladen
discboot_16bars_510b+.asm
(6.29 KiB) 49-mal heruntergeladen
PP´s of STARSOFTBerlin__________github|meine Webseite|Demozoo

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Dr. Irata »

Vielen Dank für den Code, aber so ganz habe ich es noch nicht verstanden, wie ich den Code in mein Programm einbinde, damit daraus dann eine Bootdiskette erstellt wird.
LG
Peter

Benutzeravatar
pps
Beiträge: 529
Registriert: 18.06.2021 23:05
Has thanked: 115 times
Been thanked: 205 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von pps »

Im Wesentlichen benötigst Du den Code von "compileto.
equ $2000 " bis zum Ende von ".proc init". Vor die eigentliche Startroutine Deines Programms kommt das ".proc Start". Dann noch unten ab ".endp" direkt vor "fin" den Rest.

Dein Programm sollte in nach laufender Reihenfolge assembliertes werden, also kein ".org $6000" vor einem ".org $2000" machen.
"opt f+" sorgt dafür, dass alles direkt hintereinander assembliert wird ab dem ersten "org".

compileto ist Adresse ab der dann alles im Speicher liegt. Hier kann man dann ohne DOS deutlich runter gehen mit der Startadresse. Nur im Beispielcode geht weniger als $1000 nicht, da ich ja die PMBASE absolut definiert habe und auch nichts lösche...
PP´s of STARSOFTBerlin__________github|meine Webseite|Demozoo

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Dr. Irata »

... vielen Dank nochmals!
Ich habe das jetzt so in meinen Code eingebaut.
compileto equ $1000
mein Programm startet bei $2000
nach .proc init / .endp beginnt mein Programm mit allen icl und dann mit .proc start

ganz am Ende hinter meinem Programm habe ich dann deine fin Routine gesetzt (brauche ich die?).

Wenn ich den Code aus Eclipse starte kommt nur noch Boot Error (das ist wohl normal).
Wenn ich diese Datei als r2phobos.xex direkt starte läuft das Programm.
Müsste ich jetzt quasi die r2phobos.xex Datei auf eine Diskette spielen und dann läuft das Programm bootfähig am Atari direkt von der 1050?

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Dr. Irata »

Code: Alles auswählen

			/*
16 bars boot disc based on 510b+ from nyd2022
*/

;	@com.wudsn.ide.asm.hardware=ATARI8BIT
;	@com.wudsn.ide.asm.outputfileextension=.atr


compileto	equ $1000
sectors	equ ((fin-compileto)/128)+1

	opt f+				;Activate fill mode
	opt h-				;no headers
;;; ATR disk header
        .word $0296, $8, $80
:10	.he 00
	org compileto
;--------------------------- boot init
	.proc boot
	.he 00		;always 0
	dta b(sectors)	;how many sctors to load
	.wo boot	;load address
	.wo init	;init address (seems not to be used)
	jmp start
;	mva #$24 710
	.endp
;--------------------------- boot init end
	.proc init
;you can start an intro here
	jmp *
	rts
	.endp
;---------------------------

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

			
			
			
			
			
			org $2000	;4096

			
			
			icl '../hardware.txt'
			icl 'header.txt'
			icl 'character.asm'
			icl 'pmg_vars.asm'
			icl 'VBI.asm'
			icl 'Sfx-Engine.asm'
			
			.proc start
			
main1		mwa #40960 bilds1		
			mwa #41000 bilds11		
			mwa #42460 bilds2		
			mwa #42500 bilds21		
			

			mva #11 wsync
			mwa #dlist 560  
			mva #151 fuelzaehleritem
			mva #0 fuelzaehler
			mva #10 store1
			mva #170 store3
			mva #16 sound12
			jsr text
						
Start1		
			
			;50Hz oder 60 Hz
			mva #0 vcount
@			lda vcount
			beq @+
			sta grafmod
			jmp @-
@			lda grafmod
			cmp #155
			bmi @+
			;PAL
			mva #50 grafmod
			jmp @+1
@			;NTSC
			mva #9 grafmod			
@			
			
			
			jsr variablensetzen			
			jsr pmvorbereiten
			ldy #0
			ldx #0
			ldx #>vbinter			;VB-Interrupt VektorHi
			ldy #<vbinter			;VB-Interrupt VektorLo
			lda #7					;Deferred Mode mit lda #7 festlegen
			jsr setvbv				;Vektor für die eigene Routine über setvbv eintragen			
			
			
			lda #5
			ldx #2          		; Kanal 1 wählen
            sec             		; force
            jsr xSFX.START
									
hauptprogramm
.........
........


......
.......


@			lda #32
			sta scorez2
			sta 42060
			sta 43560
			inc scorez3
			lda scorez3
			sta 42059
			sta 43559
	
			rts
	.end

			icl 'lands.asm'	

fin
;---------------------------
	.if <fin < 128
;---
	.rept 128-<fin	;Sektor noch auffüllen
	.he 00
	.endr
;----
	.else
;----
	.rept 256-<fin
	.he 00
	.endr
;----
	.endif
;---------------------------
;	.rept 1040-sectors	;noch weitere 1039 Sektoren (MD)
	.rept 720-sectors	;SD
:128	.he 00
	.endr


			;run start

			

Benutzeravatar
pps
Beiträge: 529
Registriert: 18.06.2021 23:05
Has thanked: 115 times
Been thanked: 205 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von pps »

Alle ORGs im Programm müssen raus. Mit ".ALIGN $1000" kannst Du nachfolgenden Code an den nächsten 1000er binden. ".ALIGN $0400" hilft bei Fonts.

Der letzte Teil schreibt die fehlenden Bytes der "Diskette" also muss das zwingend da sein.
PP´s of STARSOFTBerlin__________github|meine Webseite|Demozoo

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Dr. Irata »

mein Programm hat ja nur ein org .. also das muss raus!
Was ist mit org compileto? Das muss drin bleiben?!

Benutzeravatar
pps
Beiträge: 529
Registriert: 18.06.2021 23:05
Has thanked: 115 times
Been thanked: 205 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von pps »

Prodehl hat geschrieben:
21.03.2022 18:52
mein Programm hat ja nur ein org .. also das muss raus!
Was ist mit org compileto? Das muss drin bleiben?!
Ja, das eine org muss bleiben. Der Atari muss ja wissen wohin er laden soll.
PP´s of STARSOFTBerlin__________github|meine Webseite|Demozoo

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Dr. Irata »

ok... und dann daraus eine atr erstellen und dann auf eine leere formatierte Diskette speichern?!

Wo steht mein Projekt?
Alle Sonderitems sind fertig - die Charaktertabelle ist auch voll!
Die Landschaft habe ich weiter ausgebaut, ich denke in den nächsten 1-2 Wochen ist sie auch komplett fertig.
Das automatische Scroll hört ja irgendwann auf und dann muss man aktiv selber runterscrollen - das ist auch nötig, da die Hindernisse sonst nicht passierbar sind (im Beispiel unten habe ich es für den Zweck der Landschaftserstellung rausgenommen, normalerweise fährt man mit dem Schiff ganz langsam und vorsichtig durch die Hindernisse). Und genau hier habe ich in den letzten Tagen rumgefeilt. Die Feinscroll-/Grobscrollroutine musste ich extra dafür anpassen, denn man muss ja jeden einzelnen (von den 8) Feinsteps fahren können, nicht - wie vorher - einen kompletten Feinscrolldurchlauf. Das habe ich heute programmiert und jetzt fliegt das Raumschiff sehr flüssig und sehr filigran Step für Step (wenn man es so steuert) weiter. Da musste ich noch etwas Code und Gehirn reinstecken.
An die Explosionen muss ich nochmal ran, denn die schöne Lösung der mitlaufenden Explosionen beim automatischen Scroll sind hinderlich, denn wenn das Raumschiff steht und man ballert einen Tank ab, dann kommt automatisch der Scroll rein für die 4 Explosionsphasen...
Wenn ich das gefixt habe, kommt der Part mit der Schiffskollision. Das erkennt er schon, aber ich muss die Aktion noch programmieren: Explosion des Schiffes, Verlust eines Schiffes, zurück zu einem vorherigen Punkt gehen, Sound dafür. Dann kommt noch das Auffüllen eines Schiffes bei einem bestimmten Score.
Danach gehe ich nochmal ganz intensiv an die Kollisionserkennung. Die ist gerade bei Nahdistanz noch zu fehlerhaft... das will ich perfekt hinbekommen.
Wenn das alles fertig ist, kommt der Endgegner - hier bin ich noch völlig blank... irgendetwas cooles muss her.
Dann das Intro incl. Sound - der Introsound soll dann während des Spieles leise weiterlaufen...
Wie man sieht: Da ist noch viel zu tun!!
Ich stelle das Spiel auf jeden Fall fertig und es soll schön spielbar sein! Mein erstes komplettes und komplexes Projekt für Atari!.
Ob ich es dann später für den Abbuc-Wettbewerb einreiche... fraglich. Vielleicht hat es zu viele Ähnlichkeiten mit Phobos von damals... vielleicht baue ich die ganzen Grafiken und Charakter später noch um und baue daraus etwas anders... mal sehen!

Und hier noch ein kurzes Video von dem neu erstellten Landschaftspart - wie gesagt, später fährt man hier langsam selbstgesteuert durch:
rtp4.1.mov
(2.83 MiB) 51-mal heruntergeladen
Liebe Grüße
Peter

Online
Benutzeravatar
Kveldulfur
Beiträge: 624
Registriert: 17.08.2021 02:32
Has thanked: 237 times
Been thanked: 163 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Kveldulfur »

Hi!
Solange es Deine eigene Kreation ist und Du keine Urheberrechte verletzt, solltest Du damit am Software-Wettbewerb teilnehmen können.
Du darfst es nur nicht vorher veröffentlichen... Das ist ja der Punkt, wo ich auch unsicher bin. Sonst hätte ich von meinem Projekt auch mal etwas gepostet ;-)

Grüße
Janko

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Dr. Irata »

Ich stelle ja hier nur Fragmente des Programmes rein und ab und zu mal einen kleinen Ausschnitt als Video. Das Programm so ist ja noch nicht fertig und schon gar nicht spielbar.
Sollte das dennoch ein Problem machen, dann ist es halt Pech ;-)
Wenn alles fertig ist, möchte ich nach dem Wettbewerb alle Source-Codes noch massiv mit Bemerkungen und Erklärungen versehen und dann veröffentlichen. Da sind so viele Erkenntnisse mittlerweile - und Fallstricke... klar, die Allermeisten sind schon echte Profis und brauchen das sicher nicht, aber etwaige Neueinsteiger was Assemblerprogrammierung angeht, könnte es helfen. Ich gehe da mal von mir selber aus: Mir hätte das enorm geholfen!!!
Ich hatte so viele Probleme zu bewältigen (und da gibt es noch ein paar) - alleine die weiterscrollende Explosion war so tricky... Kollege Christensen hatte damals ja auch so seine Probleme damit und es auch erst bei Phobos richtig gelöst... in Caverns of Mars 1 war das noch nicht der Fall wie man gut auf youtube sehen kann! Caverns of Mars 2 war schon etwas komplexer und bei Phobos hat er alles perfekt programmiert! Schade, daß er danach völlig abgetaucht ist!

Benutzeravatar
pps
Beiträge: 529
Registriert: 18.06.2021 23:05
Has thanked: 115 times
Been thanked: 205 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von pps »

Prodehl hat geschrieben:
22.03.2022 18:05
ok... und dann daraus eine atr erstellen und dann auf eine leere formatierte Diskette speichern?!
Mit dem Code entsteht direkt eine atr Datei.
PP´s of STARSOFTBerlin__________github|meine Webseite|Demozoo

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Dr. Irata »

Was gibt es Neues?
RTP hat eine weitere Facette vor der ich echt richtig Bammel hatte.
Das Spiel hat jetzt ein richtig schönes 3-stimmiges Intro mit laufender Hintergrundmusik.
Da muss ich jetzt großen Dank an Janko loswerden, der die alte Vorlage aus der Hexenküche (damit sind auch meine ersten Töne entstanden) stark erweitert hat und so eine wirklich schöne aber dennoch schlanke Engine gemacht hat. Diese läßt sich leicht in den asm - Code einbinden!
Dann habe ich von ihm noch den Tipp bekommen mir auf fiverr.com für schmales Geld eine 8-bit Retromusik komponieren zu lassen, über eine Partitur kann man dann die Töne und den Takt auslesen und ins System reinbringen... Janko (so viel verrate ich schon mal) schreibt gerade an einen Midi-Analyse-Konverter... damit kann jeder ohne Kenntnisse die Sounds in den Atari einbringen... einfach fantastisch und es funktioniert scho!!! Ich hoffe, daß er dieses Projekt noch verfeinert... nochmals vielen vielen Dank, Janko!!
Musik ist drin, nun gehts weiter mit dem Code.... und ich habe noch satte 11kb frei!
LG
Peter2

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Dr. Irata »

.... die dreistimmige Musik überlastet jetzt leider den VBI bei 60 Hz. Sauber spielen kann man es jetzt nur im 50 Hz-Modus.
Ich mache jetzt erstmal die Landschaft komplett fertig und programmiere das Endlevel und die vielen Kleinigkeiten, die noch notwendig sind. Dann kümmere ich mich um die Kollisionsabfrage (da gibt es noch ein paar Fehler) und dann kommt das Intro.
Ich überlege auch, ob ich die Grafik etwas umbaue, damit das Spiel nicht zu nah am Original Phobos ist.
Wenn alles fertig ist, kümmere ich mich noch ganz intensiv an der Optimierung des VBI, damit die Hintergrundmusik auch im 60 Hz Modus spielt und das Spiel funktioniert. Falls das nicht klappt, ändere ich die Hintergrundmusik in 2 - oder 1 -stimmig
.... aber jetzt erstmal die Landschaft, am liebsten soll die bis zur NOMAM fertig sein!

Erhard
Beiträge: 555
Registriert: 04.11.2021 15:52
Has thanked: 52 times
Been thanked: 111 times
Kontaktdaten:

Return to Phobos

Beitrag von Erhard »

Hi,

Prodehl hat geschrieben:
23.11.2021 10:02
das Teilen durch 8 geht mit drei ROR-Anweisungen!
vielleicht ist es schon aufgefallen, aber falls nicht: wenn man ROR benutzt, kommen die Bits, die man rechts rausschiebt, über und mit Carry wieder links rein:

CLC
$1F = %00011111
ROR -> %00001111 1
ROR -> %10000111 1
ROR -> %11000011 1 -> $C3

Meines Erachtens wäre also LSR richtig.

CU, Erhard

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Dr. Irata »

Hallo Erhard,
der Post war ja im November und sicherlich noch mit weniger Assembler-Erfahrung meinerseits. Darum habe ich ja auch vor jedem ROR ein CLC gesetzt, die andere Lösung mit LSR ist natürlich besser!
An die Kollisionskorrektur muss ich eh nochmal ran, daher habe ich den Code bislang so belassen.
Danke aber für den Tip
Gruß
Peter

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Intro fertig...

Beitrag von Dr. Irata »

Was gibt es Neues bei RTP?

Das Intro ist fertig!
Mir bleiben für den gesamten Rest jetzt noch 3100 bytes....
Die Landschaft ist fertig, der Sound für die Schüsse und Explosionen sind drin, funktionieren aber noch nicht so richtig gut bzw. nicht mehr... die Kollision für das Raumschiff muss noch rein. Da wird noch etwas Code benötigt und wohl den ganzen Rest verschlingen.
Danach kommt die ganze Fehlerbereinigung. Ich habe noch etwas überflüssigen Code drin, den werde ich noch rausschmeissen und so noch etwas Platz schaffen... viel geht aber nicht mehr.
Das bedeutet aber, das das Programm auch bald dann fertig ist.
Ich denke am meisten Zeit werde ich noch brauchen, um die Fehler zu beseitigen und um Code zu optimieren....
Gruß
Peter

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Dr. Irata »

IMG_4584.MOV
(4.64 MiB) 68-mal heruntergeladen

Erhard
Beiträge: 555
Registriert: 04.11.2021 15:52
Has thanked: 52 times
Been thanked: 111 times
Kontaktdaten:

Return to Phobos

Beitrag von Erhard »

Hi,

da ist ein Grafikfehler nach dem Textscroller bei ca. Sekunde 19 ...

Schöne Ostern

Erhard

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Dr. Irata »

Guten Morgen Erhard,
vielen Dank für die Info!
Der Fehler tritt auf, wenn man auf Start drückt und das Programm vom Intro (Textscroller) auf Game umschaltet.
Ich nutze für das Intro eine andere Displaylist und einen anderen Charakterset... den Fehler kenne ich, habe ihn aber noch nicht lokalisiert... mir fällt gerade was ein, das probiere ich gleich mal aus! Danke für die Inspiration!!
Schöne Ostern
Gruß
Peter

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Dr. Irata »

....der Bildschirm ist noch nicht leer - beim Umschalten auf den anderen Charakterset wird die Schrift dann entsprechend kryptisch...
Ich muss den gesamten Bildschirm löschen beim Umschalten vom Intro zum Hauptprogramm!
Jetzt hab ich es (war eigentlich fast klar) ... Danke Erhard!

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Dr. Irata »

Fehler gefixt!!

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Dr. Irata »

Moin moin,
da habe ich mal wieder ein dumme Frage in die Runde:
Mein Intro ist fertig... mit Musik und Textscroll... das läuft so munter vor sich hin bis ich Start drücke und dann geht das Spiel los... so die Theorie.
Allerdings muss ich manchmal mehrmals auf Start drücken, bis er es erkennt, da das Introprogramm gerade woanders ist. Das ist natürlich blöd, denn wenn man Start drückt, soll es auch gleich losgehen. Ich dachte - schlau wie ich bin - das könne ich im VBI lösen. Denkste. Die 2. Hälfte des VBI schreibt immer #8 in die Consol.... das muss doch besser gehen??? Wo ist hier der Haken?
Gruß
Peter

Online
Benutzeravatar
Kveldulfur
Beiträge: 624
Registriert: 17.08.2021 02:32
Has thanked: 237 times
Been thanked: 163 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Kveldulfur »

Hallo Peter!

Ich frag mich gerade wie umfangreich Dein Intro ist, da bei mir das ganze wie folgt aussieht:

Code: Alles auswählen

		lda #$08
		sta CONSOL
		
		jsr TitleVBI.An			; Titel-MUSIK einschalten
	
Loop		lda #$00			; Farbwechsel verhindern
		sta ATRACT
		
		lda CH				; Prüfen ob ESC gedrückt wurde
		cmp #$1c			
		beq Exit			

		lda CONSOL			; Prüfen ob START gedrück wurde
		cmp #$06			
		bne Loop			
		
Exit		jsr TitleVBI.Aus		; Titel-MUSIK abschalten
Im "TitleVBI" wird die Musik und jegliche Ausgabe gesteuert, so dass die Hauptschleife lediglich die Start- und Esc-Taste ausliest.

Grüße
Janko

Benutzeravatar
Dr. Irata
Beiträge: 937
Registriert: 24.08.2021 14:40
Has thanked: 110 times
Been thanked: 268 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Dr. Irata »

hmmm ... klar, bei mir läuft alles in der Hauptschleife: Musik, Grob- und Feinscrolling.....
Dann baue ich das um und lege das alles in einen VBI und mache die Schleife ganz schlank!
Danke für die Eingebung, Janko!!

Online
Benutzeravatar
Kveldulfur
Beiträge: 624
Registriert: 17.08.2021 02:32
Has thanked: 237 times
Been thanked: 163 times
Kontaktdaten:

Re: Return to Phobos

Beitrag von Kveldulfur »

Hallo!

Ich denke nicht, dass es zwingend im VBI liegen muss, es sollte nur möglichst schnell abgearbeitet werden können.

Janko

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast