![]() |
|
Development Abteilung Ihr wollt für euren Lieblingshandheld Spiele oder Tools entwickeln? Bitte die Präfixe benutzen! |
![]() |
| LinkBack | Themen-Optionen | Thema durchsuchen |
![]() | #1 |
Moderator ![]() ![]() ![]() ![]() | ![]() 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:
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 |
![]() | ![]() |
Sponsored Links |
![]() | #2 |
![]() ![]() ![]() | ![]() 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. |
![]() | ![]() |
![]() | #3 |
Moderator ![]() ![]() ![]() ![]() | ![]() ![]() 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 :-) |
![]() | ![]() |
![]() | #4 |
Moderator ![]() ![]() ![]() ![]() | ![]() 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 ^^" |
![]() | ![]() |
![]() | #5 |
Moderator ![]() ![]() ![]() ![]() | ![]() ![]() 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 ![]() |
![]() | ![]() |
![]() | #6 |
Themen-Moderator ![]() ![]() ![]() ![]() | ![]() Mach nur schön weiter. Werde es ebenfalls weiter verfolgen. |
![]() | ![]() |
![]() | #7 |
Moderator ![]() ![]() ![]() ![]() | ![]() 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: |
![]() | ![]() |
![]() | #8 |
Moderator ![]() ![]() ![]() ![]() | ![]() ![]() Schaut gut aus, was war das fuer ein Display? Mit direkter Ansteuerung (RGBVH)? |
![]() | ![]() |
![]() | #9 |
Moderator ![]() ![]() ![]() ![]() | ![]() 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. |
![]() | ![]() |
![]() | #10 |
Moderator ![]() ![]() ![]() ![]() | ![]() ![]() 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 ![]() |
![]() | ![]() |
![]() | #11 |
Moderator ![]() ![]() ![]() ![]() | ![]() ![]() So habe jetzt meinen Grafikteil angefangen (jaja es geht weiter ![]() 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 |
![]() | ![]() |
![]() | #12 |
![]() ![]() ![]() ![]() | ![]() 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
__________________ |
![]() | ![]() |
![]() | #13 | |
Moderator ![]() ![]() ![]() ![]() | ![]() ![]() Zitat:
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. | |
![]() | ![]() |
![]() | #14 |
![]() ![]() ![]() ![]() | ![]() 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
__________________ |
![]() | ![]() |
![]() | #15 |
![]() ![]() | ![]() 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 ![]() |
![]() | ![]() |
![]() | #16 |
Moderator ![]() ![]() ![]() ![]() | ![]() ![]() 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 |
![]() | ![]() |
![]() | #17 |
![]() ![]() ![]() | ![]() 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... |
![]() | ![]() |
![]() | #18 |
Moderator ![]() ![]() ![]() ![]() | ![]() ![]() 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) |
![]() | ![]() |
![]() | #19 |
Themen-Moderator ![]() ![]() ![]() ![]() | ![]() 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 |
![]() | ![]() |
![]() | #20 | |
Moderator ![]() ![]() ![]() ![]() | ![]() ![]() Zitat:
-- 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. Geändert von goldmomo (20.06.2009 um 17:34 Uhr) | |
![]() | ![]() |
![]() |
|
Lesezeichen |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | Thema durchsuchen |
| |
![]() | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
DS-Prototyp irgendwann mal zum Kaufen? | Wiesenlooser | Sonstiges (Nintendo DS) | 50 | 20.08.2005 13:12 |
Zitat: "Auch die mobile Spielkonsole PSP wurde erstmals groß in Europa gezeigt." | Pegasuska | Sonstiges (PSP) | 0 | 13.04.2005 23:44 |
Mario Advance 4 was wirds sein? | Iceman | Spiele (GBA) | 80 | 14.05.2003 01:07 |