So ich haue hier mal was hin,
Hört sich verrückt an, ist es vieleicht aber nicht,
Ich bin gerade mit Kaiser für 6128 beschäftig,
Das berühmte original Splittscreen geht auf dem 6128. Ja ich habs gemacht.
Der so coole Zeichensatz ist auch auf dem 6128 verfügbar.
So zwei wichtige Dinge habe ich da noch zu erledigen.
1. Der Sound hmmm
2. Im Krieg die Steuerung.
Wer nett wenn ich da unterstüzung bekäme.
Mit freundliche grüßen
Super Projekt...
xesrjb
Ich bin ja auch ein Wenig in dem Projekt involviert, aber mir fehlen da absolut die Kenntnisse, wie man die Routinen weiter verbiegen könnte, deswegen hab ich dich ja mal hier ins Forum geschmuggelt ;)
Was ich nur immer wieder sagen kann: Firmwarebereiche des 464 mit dem 6128 vergleichen, ggf. im Code relocaten, klappt ja bislang auch ganz gut.
GGf. kann man ja sogar Bereiche des 6128 "verpfuschen" dass er eigentlich denkt, er ist ein 464? Die Routinen sind ja alle auch "Writeable"....
Ich erinnere mich daran, dass es für den 464 immer in den Sonderheften einen 6128 Emulator gab, das muss ja auch umgekehrt möglich sein...?
Super Projekt! Viel Glück Euch beiden!
Die Sprungadressen kann man anpassen. Was dem 6128 "fehlt" kann man eventuell ins E-RAM legen. ;) :)
Vieleicht gibts ja noch einen verrücklten der da mit machen möchte,will. Aktuellen stand der ding auf Disk sowie das Assemblerlisting der Grafik-Soundroutinen währen dann auch zugänglich
Gerne auch per PN
Vieleicht gibts ja auch jemanden der die Musik sag ich mal, Sound/ent/env sauber rauszieht damit eine init routine baut, tu mich da noch schwer mit grrr
Edit. Habe die ENT/ENV aber die werde ja nicht richtig initialiesert &BCAA &BC.. &BC.., lade die zur zeit dirket in die ENT/ENV Bereich.
So leute jetzt hau ich mal ne frage zu Sound raus
Mit
LD HL,soundblock
CALL &BCAA
ret
soundblock
db . . . . .
byte 0 - channel status byte
byte 1 - volume envelope to use
byte 2 - tone envelope to use bytes
3&4 - tone period byte
5 - noise period byte
6 - start volume bytes
7&8 - duration of the sound, or envelope repeat count
wie kann ich 3,4,5,6,7,8 herrausfinden, wenn ich die ent/env blöcke habe ??
Vielen dank schon mal
So mal Stand der Dinge,
hänge leider immer noch am Sound und der Steuerung im Krieg.
Was dafür geht ist die Krönung. hab sie in die 2. Bank geladen und entsprechende Anpassungen gemacht.
Wie schon vorher erwähnt, Splittscreen, War (leider ohne Steuerung und Sound).
Muss noch ein paar optische anpassungen machen wegen der steuercode im Basicteil 6128 verhält sich da ja auch anders.
Die lieben Herren Programmierer von Kaiser machen es einem auch nicht leicht. Ich denke zwar das ich die IN`s für die Tastaturabfrage gefunden habe, weiss allerdings nicht von wo Sie angesprungen werden. Da scheint es Tabellen zu zugeben.
; keyboard in ??
LD B,&FF ;;A040: .. 06 FF
;; Port Read
IN A,(C) ;;A042: .x ED 78
LD C,A ;;A044: O 4F
;; Port Read
IN A,(C) ;;A045: .x ED 78
CP C ;;A047: . B9
JR Z,&A045 ;;A048: (. 28 FB
CP &CC ;;A04A: .. FE CC
JR NZ,&A040 ;;A04C: . 20 F2
CALL &BE90 ;;A04E: ... CD 90 BE
JR &A040 ;;A051: .. 18 ED
Angesprungen wird hier auf &A045 weiss auch nicht wo der hinspeichert grrr.
Was ich auch in diesem zusammenhang seltsam finde ist der CALL &BE90, scheint ganz ohne wirkung zu sein.
Bleibe aber dran, Backtrace kann leider keiner der Emulatoren, währe natürlich coool.
Anbei mal für neugierge der Aktuelle stand als DSK start mit run"k6128
Sowie mal das Dissassmble von dem MC-Teil
Naja wir haben ja einige User hier, die sich mit Assembler recht gut auskennen, vielleicht helfen die ja mal mit 8)
Wie man Tastaturen (sauber) abfragt etc. kann man hier finden:
http://www.cpctech.org.uk/
Ist zwar etwas unübersichtlich, aber durchaus hilfreich.
Quote from: TFM on 31. August 2020, 00:07:09
Wie man Tastaturen (sauber) abfragt etc. kann man hier finden:
http://www.cpctech.org.uk/
Ist zwar etwas unübersichtlich, aber durchaus hilfreich.
Dafür müsste man erstmal wissen, wie es hier bei Kaiser im Prinzip im Detail funktioniert, ich schätze mal, daran hapert es momentan noch.
Igrendwas wird da noch falsch berechnet,
Setze ich Beispielsweise &9E52 von DEC A auf XOR A kann ich einmal nach Aufwärts drücken dann wiederholt es sich und der Corsour wander bis es nicht mehr weitergeht hoch.
Was ich noch intressant finde ist der Bereich ab &9DC8 bis &9E00. hier werden Werte verändert.
Beim tracen bin ich dann auf folgenden werte für links,recht, rauf und runter gekommen &50,&51,&52,&58 und für Enter &62 was dann nicht zum setzen des Zero's führt.
Ich werde mir mal die Bereich von &9DC8 bis &9E00 mal genauer anschauen.
Nachtrag auf &A303 werden die X,Y Kordinaten zwischengespeichtert
Update: Movment fixed. SUB &F5 ;;9E36: muss SUB &3F sein xd
Wichtig wäre vllt auch, wenn du disassemblierten Code verwendest, dem auch Label zu verpassen, das geht im JavaCPC-Assembler mit ein paar wenigen Klicks. (Dafür muss der Code allerdings auch in reiner Form, von JavaCPC, disassembliert vorliegen)
Das würde vieles Übersichtlicher machen...
Genauso auch, dass du die Firmware-Label mit einfügst (Geht damit auch)
Danke für den Hinweis Markus, update mit ein paar fixes.
Optisch bei bei der nameseingabe. Movement fix eingepflegt.
Start mit run"k6128c
So nur noch den sound hinbiegen da mag er noch nicht so richtig !!
wer direkt mal den Krieg testen möchen nach den namenseingaben break und gosub 4112
wer sich direkt mal krönen lassen möchte macht einfach einfach nach der namenseingabe, ein break, gibst t(c)=9:gosub 745 ein
so erstmal viel spass
Da bin ich mal wieder,
irgendwie hab ich grad nee kriese.
es gehen nur zwei sounds nicht, playerwechsel, und die amtsenthebung.
die routine wird irgend wie noch falsch gefüttert, ich weiss nur noch nicht warum.
wie bekannt werden paramter über &A329 geladen. diese dann von der routine ausgwertet
Vieleicht hat da jemand einen idee.
;soundpay @899E Call &BCAA mit HL nach &89F0
org &A329
;db &00,&87 ;Wartime OK &8700
db &90,&87 ;Titelvergabe OK &8790
;db &00,&8A ;change player fail &8A00
;db &10,&8A ;enthoben fail &8A10
;db &1A,&8A ;fight ok &8A1A
;db &22,&8A ;canonshoot ok &8A22
;-------------------------------------
;
;db &00,&70 ;krönung ok
;db &F0,&89 ;tempstore for sound
;db &c0,&89
in &89F0 stehen die richtigen werte für den jeweiligen sound auch wenns dann mehrere durchgänge sind.
;playerchange sound from Kaiser
;.snd8A00 ;change player
;db &C1,&04,&C1,&14,&C1,&20,&01,&35
;parsed true &A329 and the Mainroutine @&8900
;grepped in runtime
org &a000
soundplay equ &BCAA
sound_ent equ &BCBF
sound_env equ &BCBC
ld a,3
ld hl,env3
call sound_env
ld a,4
ld hl,env4
call sound_env
ld a,1
ld hl,ent1
call sound_ent
ld hl,change
call soundplay
ld hl,change1
call soundplay
ld hl,change2
call soundplay
ld hl,change3
call soundplay
ret
.change db &01,&03,&00,&DE,&01,&00,&00,&FF,&FF
.change1 db &01,&03,&00,&7B,&01,&00,&00,&FF,&FF
.change2 db &01,&03,&00,&3F,&01,&00,&00,&FF,&FF
.change3 db &01,&04,&00,&EF,&00,&00,&00,&FF,&FF
.ent1
db &83,&05,&1E,&01,&0A,&E2,&01,&05,&1E,&01,&01,&D8,&01,&00,&00,&00
.env3
db &02,&05,&03,&01,&03,&FF,&09,&01,&FF,&02,&00,&00,&00,&00,&00,&00
.env4
db &03,&05,&03,&01,&06,&FF,&09,&01,&FF,&05,&00,&00,&00,&00,&00,&00
ich weiss ist nicht grad schön aber das ist der playerchange sound.
er wird nur leider ingame mit einem geschnarre brrrrp wiedergegeben hmm
So ich mal wieder hab mal was angehängt
Ist was zum anschauen oder schmunzeln
lg Bad
Ah, es geht merklich vorran in Deinem kaiserlichen Projekt. Sehr gut.
--
"Lieber König von Bayern als Kaiser von Preußen"
So endlich den letzten Soundbug gefunden.
jetzt geht ans Reloc.
Das heißt
1. entmüllen alte unbenutzte Routinen entfernen
2. Sound- und Grafik-Daten auf neue Adressen verschieben.
3. Movment und Textoutput aus der Hookaddresse entfern und in Freienplatz packen
4. Die eingehookte Interuptroutine verschieben Bereich A000-A4FF down unterhalt &9F00
5. Lade- und Saveroutinen auf neuen Platz setzen
6. Zeichensatz unterhalb Himem verschieben
7. neuen Loader Schreiben (ist ja fast fertig xd) und ja der wird nur eine BIN/Grafiks laden on the fly patch für 464/6128
So hier mal eine testdisk für euch,
orginal auf 6128 patch, noch kein reloc, save/load geht noch nicht richtig !!!
start mit run"k6128f
Rückmeldungen währen schon nett
Gruß Bad
Quote from: BadCPC on 10. March 2021, 18:29:09
Rückmeldungen währen schon nett
Tja, das denke ich mir auch immer....
Also ganz ohne E-ROMs läd er, auf die Frage nach "Spiel laden" sage ich "n".
Dann fragt er nach "Spieler 1-9", da hängt er dann, ich guck es mir aber morgen nochmals an. :)
Lass Dich nicht entmutigen, das wir schon. :) :) :)
Habs mal angespielt...
Was mir aufgefallen ist:
- Im Krieg fehlen die Kanonen (Die schießen nicht, bzw fehlt der Sound der fliegenden Kugeln, und dementsprechend wartet der CPC nicht, zwischen den Schüssen, sondern ballert die sofort alle (Unsichtbar, im 464 konnte man die Kugeln fliegen sehen) ab)
- Nach Ende des Krieges bekommt man einen Syntax Error (Siehe Screenshot)
Ansonsten: Super! Sieht schon sehr gut aus! Weiter so :D Den Rest schaffst du auch noch! :)
Das sind auch die einzigen Bugs, die ich finden konnte.
Habs durchgespielt (Ohne Krieg zu führen)
Saupreußn! Hast es mit JC gespielt? Da ging bei mir was nicht. Nächster Versuch meinerseits beim nächsten Update. :)
Quote from: TFM on 11. March 2021, 16:49:44
Saupreußn! Hast es mit JC gespielt? Da ging bei mir was nicht. Nächster Versuch meinerseits beim nächsten Update. :)
Da brauchste kein Update für, keine Ahnung, was du falsch gemacht hast?
Das sollte in jedem Emu laufen, mit 6128 ROMs...
Gute Antwort Markus :00008351: :00008351: :00008351: :00008351:
Echt merkwürdig , hab mal den Zeichensatz augeschaltet, als A500-ABFF sind clean, trozdem der gleiche fehler grrrr :motz: :motz:
Quote from: Devilmarkus on 11. March 2021, 17:26:03
Quote from: TFM on 11. March 2021, 16:49:44
Saupreußn! Hast es mit JC gespielt? Da ging bei mir was nicht. Nächster Versuch meinerseits beim nächsten Update. :)
Da brauchste kein Update für, keine Ahnung, was du falsch gemacht hast?
Das sollte in jedem Emu laufen, mit 6128 ROMs...
Naja, dann vielleicht ein JavaCPC Update, den hab ich auf die schnelle genutzt, und siehe da: Es hängt gleich am Anfang. Natürlich hatte ich alle ROMs aus.
Es ist aber nur BASIC mit ein paar kleinen Assemblerroutinen, nichts Weltbewegendes, das kann wirklich jeder popelige CPC Emulator darstellen (Außer er hat vllt Probleme mit der Architektur selbst)
Hey TFM,
mit JavaCPC 1-9= F1-F9
wincpc 1-9 auf zehnerblock
vieleicht liegts da bei dir dran :P
Oder den Joystick deaktivieren, dann ists auf dem Nummernblock bei Num-Lock ein ;)
Quote from: BadCPC on 12. March 2021, 14:32:46
Hey TFM,
mit JavaCPC 1-9= F1-F9
wincpc 1-9 auf zehnerblock
vieleicht liegts da bei dir dran :P
Daran lag es wohl, aber das kann ja keiner wissen. Habe sogar die F-Tasten probiert, auch erfolglos. Gut, Problem gelöst.
So, nach einigem Brainstorming mit BadCPC funktioniert nun auch die Kriegsseqzenz so, wie sie soll, und auch die Statistiken werden ohne Syntax Error ausgegeben (DEC$ is a Bitch on the 464)
Was noch fehlt: Speichern / Laden (Braucht man das, oder kann das weg?)
Dann noch rausfinden, wieso es manchmal in seltenen Fällen sporadisch Pixelfehler darstellt (Irgendwo zerschießt es noch zu viel Firmware)
Jupp danke auch Devil, für das pushen, hat sehr geholfen.
Aber wie gesagt der Fehlerteufel hatte auf dem 464 zugeschlagen, nach etwas tracen im basic hab ich dan seine Bitch (dec$) gefuden.
So erstmal mal viel spass beim, testen wir bleiben drann, vieleicht kommt ja bald eine echte final mit save/load raus,
Gruß Bad
So wir wollen ja den 664 nicht vergesse,
anbei eine testversion ohne load/save der Speicherstände
start mit run"ka664
LG BAD
ich habe hier grad einen kleine hänger,
habe die save/loadroutine angepasst trotzdem ärgert der mich,
Auf &8A80 ist der sprung zum save, geht soweit
Auf &8A70 ist der sprung zur laderoutine , habs zwar angepasst, aber greift da nicht auf disc zu grrr
habe eine erweiterung für den 6128 zur banknutzung geschrieben
;; bankswap für kaiser
org &8300
.scr_set_border equ &bc38
.scr_set_ink equ &bc32
.cas_in_open equ &bc77
.cas_in_direct equ &bc83
.cas_in_close equ &bc7a
himem equ &A67B
lastbyte equ &ABFF
lenght equ lastbyte - himem
setbank_fnt equ &7FC4 ;font
setbank_1_1 equ &7FC5 ;kroen
setbank_1_2 equ &7FC6 ;amsdoshimem
setbank_0_1 equ &7FC0 ;normal
di
;copy orig amdos to bank_1_2
.saveamsdos
LD BC,setbank_1_2 ;set Bank 2
out (C),C ;set Bank 2
ld hl,himem
ld de,&4000
ld bc,lenght
ldir
ld BC,setbank_0_1
out (c),c
ei
ret
;copy amsdos_bak this destroys the charset
.restoreamdos
di
LD BC,setbank_1_2 ;set Bank 2
out (C),C ;set Bank 2
ld hl,&4000
ld de,himem
ld bc,lenght
ldir
ld BC,setbank_0_1
out (c),C
ld a,&00
ld (&b735),a ; set font to normal
ei
ret
;-- load font
; load fonts
.loadfont
di
ld bc,setbank_fnt
out (c),c
ld hl,fnt
ld de,(fntadr)
ld bc,(fntl)
call loadfile
ld BC,setbank_0_1
out (c),c
ei
ret
;-- reinit fnt
.reinitfnt
di
ld bc,setbank_fnt
out (c),c
call &77E0
ld bc,setbank_0_1
out (c),c
ei
ret
.loadfile
call cas_in_open
ex de,hl
call cas_in_direct
call cas_in_close
ei
ret
.fnt db "fntldr.bin"
.fntadr dw &77E0
.fntl dw &0A00
und hier die geänderte lade/saveroutine
cas_out_open equ &BC8C
cas_out_direct equ &BC98
cas_out_close equ &BC8F
cas_in_open equ &bc77
cas_in_direct equ &bc83
cas_in_close equ &bc7a
org &8a3E ;loader
push af
ld hl,filename
push hl
ld de,(&AE66)
ld b,end_filename-filename
call loadfile
pop hl
ld a,50
ld (end_filename-1),a
ld b,end_filename-filename
ld de,&AC00
call loadfile
pop af
ei
ret
.loadfile
call cas_in_open
ex de,hl
call cas_in_direct
call cas_in_close
ld a,49
ld (end_filename-1),a
ret
ei
ret
org &8a70 ; entry
call &8318 ; restore AMSDOS from bank
call &8a3e ; load the savegame
call &8350 ; restore font
ei
ret
org &8a80
call &8318
ld de,(&AE66)
ld hl,&7600
or a
sbc HL,DE
EX DE,HL
call save
ld a,50
ld (end_filename-1),a
ld hl,&AC00
ld de,&0C00
call save
call &8350
ei
ret
.save
push hl
push de
push af
;open the file to write
ld b,end_filename-filename ; filename lenght
ld hl,filename ; filename
ld de,&7600 ; puffer to use
call cas_out_open
pop af
ld bc,&0000
pop de
pop hl
ld a,2
call cas_out_direct
call cas_out_close
ld a,49
ld (end_filename-1),a
ei
ret
;;
.filename
defb "Kaiser.sa1"
.end_filename
ich finds echt seltsam, zumal wenn ich diese beiden compilier, und so teste gehts ja, nur irgend wie scheint mich das basicteil zu veräppeln
für tipps woran es liegt währe ich dankbar
Feedback nach einer ersten Partie:
Es ging erstmal alles gut. Ich bin dann versehentlich auf Speichern geraten, da sollte ich dann eine Kassette einlegen, das war natürlich ärgerlich. Wenn Save nicht möglich ist, vielleicht könnte man zumindest den Menüpunkt deaktivieren, damit man nicht durch dicke Finger zum Reset gezwungen ist.
Bei schon recht fortgeschrittenem Spielstand und beim Wechsel auf das nächste Jahr bin ich in einen "Subscript out of range in 90" Fehler gelaufen. Aufgetreten ist er in der Fn n$ Funktion, für c=0. Mehr konnte ich auf die Schnelle nicht rausfinden.
War echt schön mal wieder in alten Erinnerungen zu schwelgen ;-) Danke für den Aufwand.
Auf meinem Lapi kann ich es nicht Spielen :(
Sobald gefragt wird wieviele Spieler kann ich keine Zahl angeben