PlanetSwitch Planet3DS PlanetVita PSP.de PlanetiPhone Classics Forum Handheld-Wiki

PGN-ID:[?] (Nicht eingeloggt)
Login
Registrieren
PlanetDS PlanetGameboy N-Page.de
portablegaming.de  

Zurück   portablegaming.de > Allgemeines Spielehandheldforum, GBA, N-Gage und Development > Development Abteilung


Development Abteilung Ihr wollt für euren Lieblingshandheld Spiele oder Tools entwickeln?
Bitte die Präfixe benutzen!

Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
Alt 09.01.2009, 18:37   #1
Moderator
 
Benutzerbild von goldmomo
 
Registriert seit: 03.02.2003

goldmomo hat die Renommee-Anzeige deaktiviert

Blinzeln 'Irgendwann' wirds mal eine Spielkonsole

Hi,

so bin mal wieder da :-)
Hat ja schon mal einen Thread geöffnet in den es um FPGA programmieren ging. Hab da weiter gebastelt und nun eine kleine CPU hin bekommen (davor externer MOS6510). Läuft momentan auf einen Altera D1 wunderbar. Werde nun weiter an einer Grafikeinheit (BUS-Arb habe ich schon) bauen damit ich mal meinen eigne Spielkonsole habe. Mal einige Infos zur CPU:
  • 16 Bit Daten
  • 32 Bit Adressen
  • asynchrone Transfereinheit für Datenzugriffe (nur durch diese)
  • 64 Datenregister
  • 64 Adressregister
  • auf meinem CyclonII bis max. 120 MHz Takt
  • voll erweiterbare Transfereinheit
  • momentan kein Cache und keine Pipelines (erstmal GPU bauen)

Damit die Sache auch programmierbar ist habe ich einen Assembler (+GUI) geschrieben, einen Emulator lass ich erstmal außen vor solang keine GPU fertig ist.

Vielleicht hat ja jemand Bock für das Teil mal etwas Code zu schreiben, wenn das System mal formen annimmt. Die Assemblersyntax ist recht einfach und bis auf die asynchrone Transfereinheit auch relativ ähnlich zu anderen CPUs.

Hier mal ein Listing von meinen 7SEG-Anzeige und Led <> Switches Test.

Code:
	
           .org	0

	;goldmomo mini1 test programm 1
	
	;memory map
	;
	;register 	 $0000 0000
	;vmem     	 $0040 0000
	;iram   	 $0080 0000
	;iram mirror     $00c0 0000
		
	;setup standard xfer list
	
	movei	d1,0			;load offset	
	.stxfl	d1,d0,standard		;d1 offset , d0 temp	(generate opcode)
		
	;setup hex d/a regs
	
	movei	d0,$11
	seta	a10,d0	;a10 = $11 (H0)	
	
	movei	d7,$16	;'L'
	movei	d8,$19	;'O'
	movei	d9,$19	;'O'
	movei	d10,$d	;'C'
	movei	d11,$0	;offset 0
				
	;setup switches and led d/a regs
	
	movei	d0,$0
	seta	a0,d0	;a0 = $00 (SW)
	
	movei	d0,$10
	seta	a1,d0	;a1 = $10 (LEDG)
	
	movei	d1,$ff	;default value
	

	movei	d6,$ff
	moveih	d6,$ff
wsw0	
	
	clrt				;clear t
	addti	d6,1			;+1
	gpc	a63,2			;a63 (lr) = pc + 2 
	brats	scroll_hex		;bra if t = 1

	movei	d0,0			;
	clrt		
	xfert	d0,ctrl_rsw_wled	;execute read switch/write led
	sync	d1			;sync d1 back from xfer unit
	cmpeqi	d1,0			;all zero
	bratc	wsw0			;loop

end 	bra	end			;ende


;****************************
;*
;* scroll_hex
;*
;*

scroll_hex

	movei	d0,0			;
	clrt				;
	xfert	d0,set_hex_all		;write hex display values
	xfert	d0,scroll		;scroll values
	jmp	a63			;jmp lr (back)
	
	;
	
	.increl
	;.include	"tools.s"
		
	.xferlist	standard
		
ctrl_rsw_wled

	read	d1,(a0)
	write	(a1),d1
	stop
	
set_hex_all

	write	d7,(a10)+	;h0
	write	d8,(a10)+	;h1
	write	d9,(a10)+	;h2
	write	d10,(a10)+	;h3
	write	d11,(a10)-4	;hoffset
	stop
	
scroll
	
	;d7 	->	a11L	->	d8
	;d8	->	a11H	->	d9
	;d9	->	a12L	->	d10
	;d10	->	a12H	->	d7
	
	setal	a11,d7	;L	16
	setah	a11,d8	;O	19
	setal	a12,d9	;O	19
	setah	a12,d10	;C	d
	getal	d8,a11
	getah	d9,a11
	getal	d10,a12
	getah	d7,a12
	stop
				
	.xferlist_end
Miniaturansicht angehängter Grafiken
'Irgendwann' wirds mal eine Spielkonsole-dmu_assembler.png  
goldmomo ist offline   Mit Zitat antworten
Sponsored Links
Alt 10.01.2009, 15:28   #2
Jim männlich
 
Benutzerbild von Jim
 
Registriert seit: 14.08.2005

Jim hat die Renommee-Anzeige deaktiviert

Standard AW: 'Irgendwann' wirds mal eine Spielkonsole

Dieses "irgendwann" kann man wahrscheinlich zu jedem Hobbyprojekt hinzufügen wenn es um das den Zeitpunkt geht wann das ganze fertig werden soll.

Ist schön mal wieder was neues von dir zu sehen, werds auf alle Fälle mitverfolgen.

In Sachen FPGA hab ich in der 12. Klasse (letztes Jahr) eine Jahresarbeit geschrieben. Der Lehrer hat das Thema "Programmierbare Bausteine" vorgeschlagen, wo ich dann sofort an deinen Thread dachte. Deswegen ist später dann auch ein Pong Spiel daraus geworden, das Hauptziel war die Ansteuerung des VGA-Anschlusses. So ging das Projekt sogar recht problemlos beim Lehrer durch. Leider ist der FPGA (Spartan 3AN) und das passende Buch jetzt Schuleigentum, aber zumindest konnte ich das ganze mal ausprobieren ohne was bezahlen zu müssen.
Dein Thread hat mir das Thema aufjedenfall näher gebracht, womit ich dir hier mal danken möchte.

Das mal für dich als Motivation hier Fortschritte zu machen.
Jim ist offline   Mit Zitat antworten
Alt 10.01.2009, 16:49   #3
Moderator
 
Benutzerbild von goldmomo
 
Registriert seit: 03.02.2003

goldmomo hat die Renommee-Anzeige deaktiviert

Standard AW: 'Irgendwann' wirds mal eine Spielkonsole

Ja mit dem "Irgendwann" und Hobbyprojekt hast du recht, man kann sich leider eben nur in der Freizeit damit beschäftigen und die ist öfters etwas knapp.

Schön, dass ihr so etwas in der Schule machen dürft, zu meiner Zeit war das unmöglich (da gabs wohl auch kaum FPGAs :-) )

Mit der Motivation habe ich keine großen Probleme, irgendwann macht man seine Sache halt, egal ob es jemanden interessiert, ist dann eher als Herausforderung gedacht.

Ich mach auf jeden Fall weiter, ich will meine Spielkonsolenhardware/software selber erstellen und wenns noch Jahre dauert :-)
goldmomo ist offline   Mit Zitat antworten
Alt 11.01.2009, 09:38   #4
Moderator
 
Benutzerbild von tommiboy
 
Registriert seit: 26.08.2003
Alter: 29
Spielt gerade: Ingress

tommiboy ist ein Forengotttommiboy ist ein Forengotttommiboy ist ein Forengott
tommiboy ist ein Forengotttommiboy ist ein Forengotttommiboy ist ein Forengotttommiboy ist ein Forengotttommiboy ist ein Forengotttommiboy ist ein Forengotttommiboy ist ein Forengotttommiboy ist ein Forengott

Standard AW: 'Irgendwann' wirds mal eine Spielkonsole

Und ich bin schon stolz auf mich, wenn ich mal ne Matrixtastatur und nen LCD Display an meinen 8bit Mikrocontroller löte und ne Software dazu schreibe :<

Respect, goldmomo, solide Arbeit!
Aber das wollte ich schon bei deinen GBA Demos sagen, die ich mal vor 2~3 Jahren angetestet hab ^^"
__________________
Fernsehen macht blöd...
... aber unglaublich viel Spaß!
Walulis sieht fern
tommiboy ist offline   Mit Zitat antworten
Alt 12.01.2009, 08:38   #5
Moderator
 
Benutzerbild von goldmomo
 
Registriert seit: 03.02.2003

goldmomo hat die Renommee-Anzeige deaktiviert

Standard AW: 'Irgendwann' wirds mal eine Spielkonsole

Kannst dein Projekt hier ja mal zeigen. Habe in letzter Zeit, auch viel mit AVRs gebastelt (8*7Seg Anzeige, Eeprom-Brenner, ...). Allerdings hat mich der AVR etwas aufgeregt, besonders das keine Indizierte-Indirekte-Adressierung moeglich ist und man immer auf X/Y/Z rumrechnen muss
goldmomo ist offline   Mit Zitat antworten
Alt 12.01.2009, 14:55   #6
Themen-Moderator
 
Benutzerbild von .Tobi.
 
Registriert seit: 06.06.2007
Alter: 25
Spielt gerade: das etwas andere Spiel

.Tobi. ist ein Forengott.Tobi. ist ein Forengott
.Tobi. ist ein Forengott.Tobi. ist ein Forengott.Tobi. ist ein Forengott.Tobi. ist ein Forengott.Tobi. ist ein Forengott.Tobi. ist ein Forengott.Tobi. ist ein Forengott.Tobi. ist ein Forengott

Standard AW: 'Irgendwann' wirds mal eine Spielkonsole

Mach nur schön weiter. Werde es ebenfalls weiter verfolgen.
.Tobi. ist offline   Mit Zitat antworten
Alt 12.01.2009, 19:07   #7
Moderator
 
Benutzerbild von tommiboy
 
Registriert seit: 26.08.2003
Alter: 29
Spielt gerade: Ingress

tommiboy ist ein Forengotttommiboy ist ein Forengotttommiboy ist ein Forengott
tommiboy ist ein Forengotttommiboy ist ein Forengotttommiboy ist ein Forengotttommiboy ist ein Forengotttommiboy ist ein Forengotttommiboy ist ein Forengotttommiboy ist ein Forengotttommiboy ist ein Forengott

Standard AW: 'Irgendwann' wirds mal eine Spielkonsole

Zitat:
Zitat von goldmomo Beitrag anzeigen
Kannst dein Projekt hier ja mal zeigen.
[...]
Dazu muss ich das aber erst ausbauen, damit es vorzeigbar wird

Mein ansehnlichstes Projekt war bis jetzt ein 'kleines' Grafikdisplay an einem MSC1210 µC von Texas Instruments - lief aber auch im Rahmen meiner Abschlussarbeit und war nur ein kleiner Teil des (für mich und meinen Projektpartner damals doch zu großen) Vorhabens...

Hier ein paar Bilder für Interessierte:
Miniaturansicht angehängter Grafiken
'Irgendwann' wirds mal eine Spielkonsole-lcd-schief.jpg   'Irgendwann' wirds mal eine Spielkonsole-webserver.jpg  
__________________
Fernsehen macht blöd...
... aber unglaublich viel Spaß!
Walulis sieht fern
tommiboy ist offline   Mit Zitat antworten
Alt 13.01.2009, 10:48   #8
Moderator
 
Benutzerbild von goldmomo
 
Registriert seit: 03.02.2003

goldmomo hat die Renommee-Anzeige deaktiviert

Standard AW: 'Irgendwann' wirds mal eine Spielkonsole

Schaut gut aus, was war das fuer ein Display? Mit direkter Ansteuerung (RGBVH)?
goldmomo ist offline   Mit Zitat antworten
Alt 13.01.2009, 11:42   #9
Moderator
 
Benutzerbild von tommiboy
 
Registriert seit: 26.08.2003
Alter: 29
Spielt gerade: Ingress

tommiboy ist ein Forengotttommiboy ist ein Forengotttommiboy ist ein Forengott
tommiboy ist ein Forengotttommiboy ist ein Forengotttommiboy ist ein Forengotttommiboy ist ein Forengotttommiboy ist ein Forengotttommiboy ist ein Forengotttommiboy ist ein Forengotttommiboy ist ein Forengott

Standard AW: 'Irgendwann' wirds mal eine Spielkonsole

Das war ein Schwarz/Weiß Display mit Text- und Grafikmodus.
Die Speicherbereiche für die Modi konnte man selbst definieren (Position und Größe im RAM).
Zeilenumbruch ging im Textmodus automatisch und der Zugriff auf die Pixel passiere immer byteweise, also in 8er-Gruppen.
Die Umrechnung von x/y-Koordinaten auf Speicheradressen und folgedessen auf den richtigen Bytecode musste ich selbst codieren.
__________________
Fernsehen macht blöd...
... aber unglaublich viel Spaß!
Walulis sieht fern
tommiboy ist offline   Mit Zitat antworten
Alt 13.01.2009, 15:07   #10
Moderator
 
Benutzerbild von goldmomo
 
Registriert seit: 03.02.2003

goldmomo hat die Renommee-Anzeige deaktiviert

Standard AW: 'Irgendwann' wirds mal eine Spielkonsole

Achso, dann kostet es nicht "so viel" Rechenleistung. Bei direktem RGB waere der TI (8051 Core) wohl etwas an seine Grenzen gekommen, obwohl er laut Datenblatt sogar bis 32 MHz laufen sollte.
Aber schoenes Projekt, freut mich, dass die anderen auch alle etwas zu basteln haben
goldmomo ist offline   Mit Zitat antworten
Alt 15.02.2009, 19:29   #11
Moderator
 
Benutzerbild von goldmomo
 
Registriert seit: 03.02.2003

goldmomo hat die Renommee-Anzeige deaktiviert

Standard AW: 'Irgendwann' wirds mal eine Spielkonsole

So habe jetzt meinen Grafikteil angefangen (jaja es geht weiter ). Habe eine Pixelpipeline gebaut die 16x16x4 Tiles unterstützt (Map 64x32). Die Grafikdaten werden aus dem FLASH-ROM geladen (4Megabyte), leider ist der mit 70ns nicht der schnellste.
Auflösung ist 320x240 (maximal 640x480 möglich).

Hier mal mein Demo-Programm und Screenshot.

Code:
	.dmu345x0	;dmu type
	.org	0

	;goldmomo mini1 test gfx program
	
	;memory map
	;
	;register 	 $0000 0000
	;iram		 $4000 0000 - 4000 03ff
	;gpu  	 	 $8000 0000 - 80ff ffff (video regs (mirror after 32))
	;gpu vmap	 $8100 0000 - 8fff ffff (vmap (mirror after 2048))
	;gpu mirror	 $c000 0000 - c000 03ff
		
	;setup standard xfer list
	
	movei	d1,0			;load offset	
	.stxfl	d1,d0,standard		;d1 offset , d0 temp	(generate opcode)

	movei	d0,$0
	seta	a16,d0
	moveih	d0,$81
	setah	a16,d0			;a16 = $8100 0000 (vmap)
	
	movei	d0,message
	moveih	d0,>message
	seta	a15,d0
	movei	d0,$00
	moveih	d0,$40
	setah	a15,d0			;a15 = $4000:message
		
	
	movei	d0,0			;index gfx map
	movei	d2,0			;end data

loop	xf	load_mem
	xf	set_tile
	movexfw	d1,d1			;sync d1
	addi	d0,1			;next map tile
	cmpeq	d1,d2
	bratc	loop	
		
		
end 	bra	end
	
message
	word	39	;'g'
	word	47	;'o'
	word	44	;'l'
	word	36	;'d'
	word	45	;'m'
	word	47	;'o'
	word	45	;'m'
	word	47	;'o'
	word	3	;' '
	word	45	;'m'
	word	41	;'i'
	word	46	;'n'
	word	41	;'i'
	word	3	;' '
	word	1	;'!'
	word	1	;'!'
	word	0	;' '  end
	
	
	.xferlist	standard
	
load_mem	

	read	d1,(a15)+,stop	

set_tile

	write	d1,(0,d0,a16),stop	
		
	.xferlist_end
Jetzt kommt noch rs232 und PS/2 Keyboard support dazu, damit ich vom PC Code direct darauf laden kann.
Miniaturansicht angehängter Grafiken
'Irgendwann' wirds mal eine Spielkonsole-gfx_test.jpg  
goldmomo ist offline   Mit Zitat antworten
Alt 15.02.2009, 21:51   #12
 
Registriert seit: 27.01.2007

________ hat die Renommee-Anzeige deaktiviert

Standard AW: 'Irgendwann' wirds mal eine Spielkonsole

da ich von dem allem so gut wie nix verstanden habe wollte ich mal wissen was für ne grafik die konsole mal haben soll und was für spiel drauf laufen sollen?
ansonsten find ich das vorhaben klasse und werde wohl auch in regelmäßigen abständen hier vorbeischaun um die fortschritte zu verfolgen.
viel glück und gelingen mit dem projekt

mfg noname1492
__________________

________ ist offline   Mit Zitat antworten
Alt 15.02.2009, 23:07   #13
Moderator
 
Benutzerbild von goldmomo
 
Registriert seit: 03.02.2003

goldmomo hat die Renommee-Anzeige deaktiviert

Standard AW: 'Irgendwann' wirds mal eine Spielkonsole

Zitat:
Zitat von noname1492 Beitrag anzeigen
da ich von dem allem so gut wie nix verstanden habe wollte ich mal wissen was für ne grafik die konsole mal haben soll und was für spiel drauf laufen sollen?
ansonsten find ich das vorhaben klasse und werde wohl auch in regelmäßigen abständen hier vorbeischaun um die fortschritte zu verfolgen.
viel glück und gelingen mit dem projekt

mfg noname1492
Momentan baue ich an der ersten Stufe (goldmomo mini).

Bei dem wird es erstmal einen Grafiklayer (Hintergrund) geben mit 16 Farben (geht schon) und wahrscheinlich 16 Sprites mit je 16x16 Pixeln. Die CPU ist ohne Pipelines (ca. 10 Cycles für jeden Befehl/Transfer) und ist mit 100 Mhz getaktet. Sound wird über Generatoren erzeugt.
Das kann man (mal abgesehen von der CPU Leistung) mit einem NES oder SMS (Sega Master System vergleichen).

Software (bzw. Games) laufen nur die dafür geschrieben werden (momentan nur meine Demoprogramme).

Die nächste Stufe (wird noch eine Weile dauern), nutzt dann auch den SRAM & DRAM für die GPU. Dann sollte genug Performance da sein um die Leistung es mit einem MD (Mega Drive) oder SNES zu vergleichen.

Mal davon abgesehen, dass ich ca. 99.9999% der Software (bzw. Spiele) schreibe.
Einen Emulator für den PC werde ich auch machen (schon um die Software zu debuggen) und da sowieso niemand 150$ für das Board ausgibt.
goldmomo ist offline   Mit Zitat antworten
Alt 16.02.2009, 11:39   #14
 
Registriert seit: 27.01.2007

________ hat die Renommee-Anzeige deaktiviert

Standard AW: 'Irgendwann' wirds mal eine Spielkonsole

danke, das NES sagt mir was, jetzt kann ich mir etwas darunter vorstellen.
ist wirklich interessant, will unbedingt wissen wie das ding läuft wenns fertig ist, sehr spannend...
gutes gelingen. mfg noname1492
__________________

________ ist offline   Mit Zitat antworten
Alt 22.02.2009, 22:50   #15
 
Benutzerbild von piti_rocks
 
Registriert seit: 05.08.2008

piti_rocks ist zur Zeit noch ein unbeschriebenes Blatt

piti_rocks eine Nachricht über ICQ schicken
Standard AW: 'Irgendwann' wirds mal eine Spielkonsole

ich hätt da mal ne frage i-wie beeindruckt das mich schon aber was soll des eig konkret werden wenns fertig is???
__________________
Biete KOSTENLOSEN Downgrade- und Flashservice für Fat und Slim im Raum Günzburg Kammeltal bei interresse per ICQ: 471812737 bei mir melden, nicht per PN weil ich hier nichtmehr aktiv bin!
piti_rocks ist offline   Mit Zitat antworten
Alt 26.02.2009, 15:37   #16
Moderator
 
Benutzerbild von goldmomo
 
Registriert seit: 03.02.2003

goldmomo hat die Renommee-Anzeige deaktiviert

Standard AW: 'Irgendwann' wirds mal eine Spielkonsole

So, habe jetzt eine ps/2 Interface und Interrupt-Verarbeitung eingebaut.
H/V Irqs funktionieren, habe dazu gleich mal ein kleines Demo gemacht.

Video gibts hier (leider ist die Framerate meiner Handy-Kamera etwas schlecht):

Hier der Demo-Code falls es jemand ausprobieren will

Code:
	.dmu345x0	;dmu type
	.org	$40000000

	;goldmomo mini1 test gfx program
	
	;memory map
	;
	;register 	 $0000 0000
	;iram		 $4000 0000 - 4000 0fff
	;gpu  	 	 $8000 0000 - 80ff ffff (video regs (mirror after 32))
	;gpu clut        $8080 0000 - 808f ffff (clut regs (mirror after 32))
	;gpu vmap	 $8100 0000 - 81ff ffff (vmap (mirror after 2048))
	;gpu mirror	 $c000 0000 - c000 03ff
		
	;setup standard xfer list
	
	; reset at 0
	
	bra	reset		;reset vector

	;irq at 1
	
irq	xf	hblank_xfer
	rtixfw
	
bg0_data
	
	.space	256
	
	;reset
	
reset	
	
	movei	d1,0			;load offset	
	.stxfl	d1,d0,standard		;d1 offset , d0 temp	(generate opcode)
	
	;ptr setup
	
	movei	d0,0
	seta	a12,d0
	setah	a12,d0		;a12 = ctrl reg base
	
	movei	d0,0
	seta	a13,d0
	moveih	d0,$40
	setah	a13,d0		;a13 = iram base
	
	movei	d0,0
	seta	a14,d0
	moveih	d0,$80
	setah	a14,d0		;a14 = gpu reg base
	
	movei	d0,0
	seta	a15,d0
	movei	d0,$80
	moveih	d0,$80
	setah	a15,d0		;a15 = clut base
	
	movei	d0,0
	seta	a16,d0
	moveih	d0,$81
	setah	a16,d0		;a16 = vmap base
	
	movei	d0,0
	moveih	d0,$10		
	seta	a30,d0
	moveih	d0,$40
	setah	a30,d0		;a30 = sp ($4000 1000) (4k words)
	
	;note d0 - d7 scratch regs, a31 is lr, a30 is sp
	
	
	;setup colors
	
	gpc	a31,2
	bra	setup_colors
	
	;draw message
	
	movei	d3,message_1
	moveih	d3,>message_1	;message offset
	movei	d4,129		;vmap offset
	
	gpc	a31,2
	bra	draw_text	;draw text
	
	movei	d3,message_2
	moveih	d3,>message_2	;message offset
	movei	d4,195		;vmap offset
	
	gpc	a31,2
	bra	draw_text	;draw text
	
	movei	d3,message_3
	moveih	d3,>message_3	;message offset
	movei	d4,$08		;vmap offset
	moveih	d4,$1
	
	gpc	a31,2
	bra	draw_text	;draw text
	
	movei	d3,message_4
	moveih	d3,>message_4	;message offset
	movei	d4,$42		;vmap offset
	moveih	d4,$1
	
	gpc	a31,2
	bra	draw_text	;draw text
	
	;enable gpu irqs
	
	movei	d0,4		;enable visible hblank
	movei	d2,8		;irqcon
	xf	store_gpu	;store
	xfwait
	
	movei	d0,$80		;move vh-hit (visible hcount to 640)
	moveih	d0,$02
	movei	d2,$a		;vhhit
	xf	store_gpu	;store
	xfwait
	
	sei			; enable irq

	
		
	movei	d8,0		;sin offset counter
	
rolles_loop

	;wait n blanks

	movei	d9,9

wait_sync
	
	movei	d2,5
	gpc	a31,2
	bra	wait_vblank
	
	movei	d2,4
	gpc	a31,2
	bra	wait_vblank
	
	subi	d9,1
	brats	wait_sync
	
	;clear bg_0 table
	
	movei	d0,bg0_data
	moveih	d0,>bg0_data
	seta	a0,d0
	moveih	d0,$40
	setah	a0,d0		;a0 = destination = bg0_data

	movei	d1,238
	movei	d0,0
	
clear_bg
	xf	write_inc
	subi	d1,1
	brats	clear_bg
	
	;add counter
	
	addi	d8,1
	movei	d0,$ff
	and	d8,d0		;d8 = 0..255
	
	;
	
	movei	d10,7		;8 rols
	movei	d11,0		;sin offset count between rollen
	
single_role

	addi	d11,10		;sin offset
	move	d12,d11
	add	d12,d8		;single count
	movei	d0,$ff
	and	d12,d0
	
	;get value from sin
	
	movei	d1,sin_data
	moveih	d1,>sin_data
	add	d1,d12
	xf	load_iram
	movexfw	d9,d0		;sin result is d9 (role start)

	;set rolle and destination adr
	
	movei	d0,rolle
	moveih	d0,>rolle
	seta	a0,d0
	moveih	d0,$40
	setah	a0,d0		;a0 = source

	movei	d0,bg0_data
	moveih	d0,>bg0_data
	add	d0,d9
	seta	a1,d0
	moveih	d0,$40
	setah	a1,d0		;a1 = destination = bg0_data + d9	
	
	;copy rolle
	
	movei	d1,15		;data length 16
cloop	xf	copy_data_inc
	subi	d1,1
	brats	cloop
	
	subi	d10,1
	brats	single_role
	
	bra	rolles_loop
	
	
end 	bra	end

;***********************************
;*
;* draw_text
;*
;* d3 = message iram offset
;* d4 = vmap offset
;*

draw_text
	
tile_loop

	movexfw	d1,d3		;message offset
	xf	load_iram	
	
	move	d2,d4		;vmap offset
	xf	store_vmap	;auto wait for d0 read

	addi	d3,1
	addi	d4,1

	cmpeqi	d0,0		;0 is message end
	bratc	tile_loop
	
	jmp	a31
	
;***********************************
;*
;* set_hex
;*
;* d1 = value
;*

set_hex

	movei	d3,3		;nibble count
	movei	d4,$f		;nibble mask
	movei	d5,$11		;store_ctrl offset 11 12 13 14 15 h0 h1 h2 h3 	
nibble_loop

	movexfw	d2,d5		;store_ctrl offset
	move	d0,d1		;ABCD
	and	d0,d4		;000D
	xf	store_ctrl
	lsri	d1,4		;0ABC
	addi	d5,1		;next offset
	
	subi	d3,1
	brats	nibble_loop
	
	movei	d0,1		;lut offset is 1
	movexfw	d2,d5		;store_ctrl offset
	xf	store_ctrl
	
	jmp	a31	

message_1

	word	32,'G'
	word	32,'O'
	word	32,'L'
	word	32,'D'
	word	32,'M'
	word	32,'O'
	word	32,'M'
	word	32,'O'
	word	3	;' '
	word	32,'P'
	word	32,'R'
	word	32,'E'
	word	32,'S'
	word	32,'E'
	word	32,'N'
	word	32,'T'
	word	32,'S'
	word	0	;' '  end

message_2
	
	word	32,'T'
	word	32,'H'
	word	32,'E'
	word	3	;' '
	word	32,'F'
	word	32,'I'
	word	32,'R'
	word	32,'S'
	word	32,'T'
	word	3	;' '
	word	32,'G'
	word	32,'F'
	word	32,'X'
	word	0	;' '  end
	
message_3
	
	word	32,'D'
	word	32,'E'
	word	32,'M'
	word	32,'O'
	word	0	;' '  end

message_4
	
	word	32,'O'
	word	32,'N'
	word	3	;' '
	word	32,'G'
	word	32,'O'
	word	32,'L'
	word	32,'D'
	word	32,'M'
	word	32,'O'
	word	32,'M'
	word	32,'O'
	word	3	;' '
	word	32,'M'
	word	32,'I'
	word	32,'N'
	word	32,'I'
	word	0	;' '  end		

;***********************************
;*
;* wait_vpos_min
;*
;*
;* d2 = min position
;*

wait_vblank

	;a31 epilog next time

wait_vblank_again

	movei	d1,5		;vcount offset
	xf	load_gpu
	xfwait
	cmplo	d0,d2
	bratc	wait_vblank_again
	
	jmp	a31
	
;***********************************
;*
;* setup_colors
;*
;*

setup_colors

	movei	d3,colors
	moveih	d3,>colors	;color offset
	
	movei	d4,0		;clut offset
	
color_loop
	
	movexfw	d1,d3		;colors 
	xf	load_iram	
	
	move	d2,d4		;clut offset
	xf	store_clut
	
	cmpeqi	d4,15
	brats	stop_color_loop
	
	addi	d3,1
	addi	d4,1
	
	bra	color_loop
	
stop_color_loop

	jmp	a31

colors

	word	$0000	;0
	word	$0cdc	;1
	word	$0aba	;2
	word	$09a9	;3
	word	$0787	;4
	word	$0676	;5
	word	$0454	;6
	word	$0343	;7
	word	$0000	;8
	word	$05f5	;9
	word	$0555	;10
	word	$0007	;11
	word	$0707	;12
	word	$0007	;13
	word	$0008	;14
	word	$0009	;15
	
	
rolle	
	word	$0200	
	word	$0400	
	word	$0600
	word	$0800	
	
	word	$0a00	
	word	$0ccc	
	word	$0eee
	word	$0fff
	
	word	$0fff
	word	$0eee	
	word	$0ccc
	word	$0a00	
	
	word	$0800	
	word	$0600
	word	$0400	
	word	$0200	
		
sin_data

	word    112   ;0
	word    114   ;1
	word    117   ;2
	word    120   ;3
	word    122   ;4
	word    125   ;5
	word    128   ;6
	word    131   ;7
	word    133   ;8
	word    136   ;9
	word    139   ;10
	word    141   ;11
	word    144   ;12
	word    147   ;13
	word    149   ;14
	word    152   ;15
	word    154   ;16
	word    157   ;17
	word    159   ;18
	word    162   ;19
	word    164   ;20
	word    167   ;21
	word    169   ;22
	word    171   ;23
	word    174   ;24
	word    176   ;25
	word    178   ;26
	word    180   ;27
	word    182   ;28
	word    185   ;29
	word    187   ;30
	word    189   ;31
	word    191   ;32
	word    192   ;33
	word    194   ;34
	word    196   ;35
	word    198   ;36
	word    200   ;37
	word    201   ;38
	word    203   ;39
	word    204   ;40
	word    206   ;41
	word    207   ;42
	word    209   ;43
	word    210   ;44
	word    211   ;45
	word    213   ;46
	word    214   ;47
	word    215   ;48
	word    216   ;49
	word    217   ;50
	word    218   ;51
	word    218   ;52
	word    219   ;53
	word    220   ;54
	word    220   ;55
	word    221   ;56
	word    221   ;57
	word    222   ;58
	word    222   ;59
	word    223   ;60
	word    223   ;61
	word    223   ;62
	word    223   ;63
	word    223   ;64
	word    223   ;65
	word    223   ;66
	word    223   ;67
	word    222   ;68
	word    222   ;69
	word    222   ;70
	word    221   ;71
	word    221   ;72
	word    220   ;73
	word    219   ;74
	word    219   ;75
	word    218   ;76
	word    217   ;77
	word    216   ;78
	word    215   ;79
	word    214   ;80
	word    213   ;81
	word    212   ;82
	word    211   ;83
	word    209   ;84
	word    208   ;85
	word    207   ;86
	word    205   ;87
	word    204   ;88
	word    202   ;89
	word    200   ;90
	word    199   ;91
	word    197   ;92
	word    195   ;93
	word    193   ;94
	word    192   ;95
	word    190   ;96
	word    188   ;97
	word    186   ;98
	word    184   ;99
	word    181   ;100
	word    179   ;101
	word    177   ;102
	word    175   ;103
	word    173   ;104
	word    170   ;105
	word    168   ;106
	word    165   ;107
	word    163   ;108
	word    161   ;109
	word    158   ;110
	word    156   ;111
	word    153   ;112
	word    150   ;113
	word    148   ;114
	word    145   ;115
	word    143   ;116
	word    140   ;117
	word    137   ;118
	word    135   ;119
	word    132   ;120
	word    129   ;121
	word    127   ;122
	word    124   ;123
	word    121   ;124
	word    118   ;125
	word    116   ;126
	word    113   ;127
	word    110   ;128
	word    107   ;129
	word    105   ;130
	word    102   ;131
	word    99   ;132
	word    96   ;133
	word    94   ;134
	word    91   ;135
	word    88   ;136
	word    86   ;137
	word    83   ;138
	word    80   ;139
	word    78   ;140
	word    75   ;141
	word    73   ;142
	word    70   ;143
	word    67   ;144
	word    65   ;145
	word    62   ;146
	word    60   ;147
	word    58   ;148
	word    55   ;149
	word    53   ;150
	word    50   ;151
	word    48   ;152
	word    46   ;153
	word    44   ;154
	word    42   ;155
	word    39   ;156
	word    37   ;157
	word    35   ;158
	word    33   ;159
	word    31   ;160
	word    30   ;161
	word    28   ;162
	word    26   ;163
	word    24   ;164
	word    23   ;165
	word    21   ;166
	word    19   ;167
	word    18   ;168
	word    16   ;169
	word    15   ;170
	word    14   ;171
	word    12   ;172
	word    11   ;173
	word    10   ;174
	word    9   ;175
	word    8   ;176
	word    7   ;177
	word    6   ;178
	word    5   ;179
	word    4   ;180
	word    4   ;181
	word    3   ;182
	word    2   ;183
	word    2   ;184
	word    1   ;185
	word    1   ;186
	word    1   ;187
	word    0   ;188
	word    0   ;189
	word    0   ;190
	word    0   ;191
	word    0   ;192
	word    0   ;193
	word    0   ;194
	word    0   ;195
	word    1   ;196
	word    1   ;197
	word    2   ;198
	word    2   ;199
	word    3   ;200
	word    3   ;201
	word    4   ;202
	word    5   ;203
	word    5   ;204
	word    6   ;205
	word    7   ;206
	word    8   ;207
	word    9   ;208
	word    10   ;209
	word    12   ;210
	word    13   ;211
	word    14   ;212
	word    16   ;213
	word    17   ;214
	word    19   ;215
	word    20   ;216
	word    22   ;217
	word    23   ;218
	word    25   ;219
	word    27   ;220
	word    29   ;221
	word    31   ;222
	word    32   ;223
	word    34   ;224
	word    36   ;225
	word    38   ;226
	word    41   ;227
	word    43   ;228
	word    45   ;229
	word    47   ;230
	word    49   ;231
	word    52   ;232
	word    54   ;233
	word    56   ;234
	word    59   ;235
	word    61   ;236
	word    64   ;237
	word    66   ;238
	word    69   ;239
	word    71   ;240
	word    74   ;241
	word    76   ;242
	word    79   ;243
	word    82   ;244
	word    84   ;245
	word    87   ;246
	word    90   ;247
	word    92   ;248
	word    95   ;249
	word    98   ;250
	word    101   ;251
	word    103   ;252
	word    106   ;253
	word    109   ;254
	word    111   ;255

	
	.xferlist	standard
	
load_ctrl	read	d0,(0,d1,a12),stop	
store_ctrl	write	d0,(0,d2,a12),stop
	
load_iram	read	d0,(0,d1,a13),stop	
store_iram	write	d0,(0,d2,a13),stop

load_gpu	read	d0,(0,d1,a14),stop	
store_gpu	write	d0,(0,d2,a14),stop

load_clut	read	d0,(0,d1,a15),stop	
store_clut	write	d0,(0,d2,a15),stop

load_vmap	read	d0,(0,d1,a16),stop	
store_vmap	write	d0,(0,d2,a16),stop

copy_data_inc	read	d0,(a0)+
		write	d0,(a1)+,stop
		
write_inc	write	d0,(a0)+,stop		

push_d0_d3	write	d0,-(a30)
		write	d1,-(a30)
		write	d2,-(a30)
		write	d3,-(a30),stop
		
push_d4_d7	write	d4,-(a30)
		write	d5,-(a30)
		write	d6,-(a30)
		write	d7,-(a30),stop		
		
pop_d0_d3	read	d3,(a30)+
		read	d2,(a30)+
		read	d1,(a30)+
		read	d0,(a30)+,stop
		
pop_d4_d7	read	d7,(a30)+
		read	d6,(a30)+
		read	d5,(a30)+
		read	d4,(a30)+,stop	
		
hblank_xfer	write	d0,-(a30)		;push d0
		read	d0,(9,d0*0,a14)		;ypos
		read	d0,(4,d0*1,a13)		;bg_0(ypos)
		write	d0,(0,d0*0,a15)		;clut(0) = bg_0(ypos)
		read	d0,(a30)+,stop		;pop d0
				
push_lr		getal	d0,a31
		getah	d1,a31
		write	d0,-(a30)
		write	d1,-(a30),stop
		
pop_lr		read	d1,(a30)+
		read	d0,(a30)+
		seta	a31,d1:d0
		
				
		.xferlist_end
Miniaturansicht angehängter Grafiken
'Irgendwann' wirds mal eine Spielkonsole-goldmomo_mini_demo1_low.jpg  
goldmomo ist offline   Mit Zitat antworten
Alt 26.02.2009, 17:51   #17
 
Benutzerbild von pos17
 
Registriert seit: 26.01.2009

pos17 hat die Renommee-Anzeige deaktiviert

Lächeln AW: 'Irgendwann' wirds mal eine Spielkonsole

Das sieht schon geil aus. Wenns 'irgendwann' wirklich mal eine Spielekonsole wird, wärs geil. Werde immer mal wieder rein gucken. Von programmieren weiß ich nicht wirklich was aber ich finde das trotzdem ziemlich beeindruckend. Sieht echt gut aus. Allein die Grafik... von Grafik kapiere ich garnichts. Beeindruckend finde ich aber auch das du alles selbst programmierst und auch die Lust hast. Mach weiter so!

mfg,
pos17!
__________________
Hi, bin inaktiv! Wenn ihr mir Fragen stellt, nicht wundern, wenn ich erst Tage später antworte...
pos17 ist offline   Mit Zitat antworten
Alt 19.06.2009, 13:33   #18
Moderator
 
Benutzerbild von goldmomo
 
Registriert seit: 03.02.2003

goldmomo hat die Renommee-Anzeige deaktiviert

Standard AW: 'Irgendwann' wirds mal eine Spielkonsole

So, habe mal wieder etwas Zeit gehabt und einen Emulator gebaut.
Der Sinn der Sache ist, dass ich/andere einfacher Software entwickeln kann/können, besonders da in einem Emulator auch der Code debug't' werden kann. Auf dem FPGA ist es momentan nicht möglich. Natürlich kann jetzt jeder, auf dem PC, „goldmomomini“ Programme laufen lassen.

Momentan geht fast alles (bis auf irq -> vblank) auf dem Emulator.
Ich werde mal einige Beispielprogramme schreiben und dann den Emulator freigeben.

(Habe mal einen Screenshot angehängt)
Miniaturansicht angehängter Grafiken
'Irgendwann' wirds mal eine Spielkonsole-goldmomo_mini_emu.png  
goldmomo ist offline   Mit Zitat antworten
Alt 20.06.2009, 13:19   #19
Themen-Moderator
 
Benutzerbild von gamefreak
 
Registriert seit: 25.06.2004
Ort: bei Würzburg
Alter: 27
Spielt gerade: TF2

gamefreak ist ein Forengottgamefreak ist ein Forengott
gamefreak ist ein Forengott

Standard AW: 'Irgendwann' wirds mal eine Spielkonsole

Ein wirklich sehr interessantes Projekt. Ich hoffe ich kann mich dann auch mal dazu begeistern ein kleines Spiel zu schreiben. So wirklich Ahnung von Assembler hab ich zwar noch nicht, aber so schwer sieht es nicht aus.
Wie sieht es denn mit der Portierbarkeit des Emulators aus, bzw. läuft er mit wine? Wenn das ganze unter Linux läuft wäre das für mich enorm praktisch. Einen Emulator in einer VM laufen lassen finde ich schon etwas arg Ressourcen verschwendend
__________________
Open Source in allen Lebenslagen:
Betriebssystem openSUSE - Browser Firefox - Office Suite Libre Office - Karten OpenStreetMap - Smartphone Android OS
gamefreak ist offline   Mit Zitat antworten
Alt 20.06.2009, 14:10   #20
Moderator
 
Benutzerbild von goldmomo
 
Registriert seit: 03.02.2003

goldmomo hat die Renommee-Anzeige deaktiviert

Standard AW: 'Irgendwann' wirds mal eine Spielkonsole

Zitat:
Zitat von gamefreak Beitrag anzeigen
Wie sieht es denn mit der Portierbarkeit des Emulators aus, bzw. läuft er mit wine? Wenn das ganze unter Linux läuft wäre das für mich enorm praktisch. Einen Emulator in einer VM laufen lassen finde ich schon etwas arg Ressourcen verschwendend
Ist in C# geschrieben ( VS2008 ) und nutzt .NET Framework 2.0. Benutze auch keine Windowsfunktionen direkt (com/dll/...), sollte so evtl. auch unter MONO auf Linux laufen. Ich werd es heute mal in einer VM mit Ubuntu versuchen.

-- Update

habe es unter .MONO auf Ubuntu (9) kompilieren können (einige Änderungen waren nötig). Leider geht der .NET-Timer nicht (bzw. wird nicht ausgelöst), deshalb kommt keine Grafikausgabe (Emulator-GFX). Die anderen GUIs funktionieren, die CPU emulation geht auch. Ich denke aber, dass mit einigen Anpassungen es so auch unter Linux laufen sollte.

-- Update 2

Ich habe mal die momentane Windows Version angehängt, VROM und IROM Datein sind mit drin. Müssen erst in der IO-Tab ausgewählt und geladen werden, dann einfach run (play) drücken. Achso, der Emulator hat noch einige Fehler und die Bedienung ist evtl. nicht so toll :-) Und eine schnelle CPU sollte man auch haben.
Angehängte Dateien
Dateityp: zip gmEmuAlpha.zip (258,6 KB, 49x aufgerufen)

Geändert von goldmomo (20.06.2009 um 16:34 Uhr)
goldmomo ist offline   Mit Zitat antworten
Antwort

  portablegaming.de > Allgemeines Spielehandheldforum, GBA, N-Gage und Development > Development Abteilung

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
DS-Prototyp irgendwann mal zum Kaufen? Wiesenlooser Sonstiges (Nintendo DS) 50 20.08.2005 12:12
Zitat: "Auch die mobile Spielkonsole PSP wurde erstmals groß in Europa gezeigt." Pegasuska Sonstiges (PSP) 0 13.04.2005 22:44
Mario Advance 4 was wirds sein? Iceman Spiele (GBA) 80 14.05.2003 00:07


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:32 Uhr.


Powered by vBulletin® Version 3.8.9 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.0
Template-Modifikationen durch TMS
PortableGaming.de © bk 2000 - 2010

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231