Welcome to Schneider / Amstrad CPC Forum. Please login or sign up.

29. March 2024, 15:19:19

Login with username, password and session length

Shoutbox

TFM

2024-01-15, 17:06:57
Momentan billige Farbbänder auf Ebay für PCW

Devilmarkus

2023-07-09, 10:37:40
Zweiter 👋😂🤣

TFM

2023-06-13, 14:21:49
Sommerloch!

TFM

2023-05-30, 17:00:20
Erster ;-)

Recent

Members
Stats
  • Total Posts: 11,655
  • Total Topics: 1,329
  • Online today: 188
  • Online ever: 1,724
  • (16. January 2020, 00:18:45)
Users Online
Users: 1
Guests: 142
Total: 143

142 Guests, 1 User
xesrjb

Welches ist die Einsprnugadresse bei einem ROM Spiel?

Started by oobdoo, 21. May 2018, 15:00:12

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

oobdoo

Ich bastel noch immer an meinem Disassembler und nutze zur Überprüfung den OnlineDisassembler https://onlinedisassembler.com/odaweb/

Zum testen habe ich das Spiel Uridium.rom hochgeladen und bekomme das als Textfile zurück:


           .data:0000c000 01 00 00                         ld bc,0x0000
                           .data:0000c003 01 0c c0                         ld bc,0xc00c
                           .data:0000c006 c3 1b c0                         jp 0xc01b
                           .data:0000c009 c3 1c c0                         jp 0xc01c
                           .data:0000c00c 55                               ld d,l
                           .data:0000c00d 72                               ld (hl),d
                           .data:0000c00e 69                               ld l,c
                           .data:0000c00f 64                               ld h,h
                           .data:0000c010 69                               ld l,c
                           .data:0000c011 75                               ld (hl),l
                           .data:0000c012 ed 55                            defb 0xed, 0x55
                           .data:0000c014 52                               ld d,d
                           .data:0000c015 49                               ld c,c
                           .data:0000c016 44                               ld b,h
                           .data:0000c017 49                               ld c,c
                           .data:0000c018 55                               ld d,l
                           .data:0000c019 cd 00 c9                         call 0xc900
                           .data:0000c01c 21 2a c0                         ld hl,0xc02a
                           .data:0000c01f 11 98 67                         ld de,0x6798
                           .data:0000c022 01 58 3e                         ld bc,0x3e58
                           .data:0000c025 ed b0                            ldir
                           .data:0000c027 c3 10 a5                         jp 0xa510
                           .data:0000c02a f8                               ret m
                           .data:0000c02b 67                               ld h,a
                           .data:0000c02c 00                               nop
                           .data:0000c02d 00                               nop
                           .data:0000c02e 00                               nop


Ich hätte vermutet das ein Programm oder Spiel welches als ROM vorliegt immer am Anfang seine Startaddresse hat.
Mir scheint aber, das dies in meinem Beipspiel keinen Sinn ergibt.

Wie ist also die Einsprungadresse bei einem ROM und wie kann man die herausfinden?
CPC 464/6128, 464/6128+, GX4000 | Atari 2600, 600XL, 800XL/XE, Portfolio | C64/II/G/R/SX, VC20, TC64 | LC 80, MPF-I | ZX81, AX81, ZX Spectrum 48k, ZX Spectrum+2 | Amiga 500/600/2000, A2630, A2088

almasys

Der Aufbau eines ROMs wird im Schneider CPC Systembuch gut erklärt: https://k1.spdns.de/Vintage/Schneider%20CPC/Das%20Schneider%20CPC%20Systembuch/z91.htm#C

An &C000 steht der ROM-Typ,
&C001 bis &C003 die Versionsnummer,
&C004 und &C005 zeigen auf die RSX-Tabelle (deren erster Eintrag der ROM-Name ist),
&C006 den JP in die Init-Routine,
ab &C009 die JPs für den jeweiligen RSX-Befehl.

Grüßle,
Mr. AMS

oobdoo

Danke.

Das muss heute irgendwie an der Wärme liegen das ich das nicht selbst gefunden hatte.
CPC 464/6128, 464/6128+, GX4000 | Atari 2600, 600XL, 800XL/XE, Portfolio | C64/II/G/R/SX, VC20, TC64 | LC 80, MPF-I | ZX81, AX81, ZX Spectrum 48k, ZX Spectrum+2 | Amiga 500/600/2000, A2630, A2088

TFM

Es ist nicht immer bei allen ROMs gleich, mit ROManager oder ähnlicher Software kann man im spezifischen ROM nachsehen. Ansonsten hat der Mr. AMS das super erklärt!  :smiley027:
TFM of FutureSoft
http://www.futureos.de --> Das Betriebssystem FutureOS (Update: 20.12.2023)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 26.12.2021)

oobdoo

Ich hatte mich vom Betriebssystem ROM (Kernel) in die Irre führen lassen.
CPC 464/6128, 464/6128+, GX4000 | Atari 2600, 600XL, 800XL/XE, Portfolio | C64/II/G/R/SX, VC20, TC64 | LC 80, MPF-I | ZX81, AX81, ZX Spectrum 48k, ZX Spectrum+2 | Amiga 500/600/2000, A2630, A2088

TFM

Mit z.B. dem X-MEM kann man auch das untere ROM austauschen. Beim Einschalten bzw. Reset springt die Z80 direkt an die Adresse 0. Also wenn man den CPC übernehmen will, dann kann man ab hier Code schreiben, allerdings muss dann die Hardware selbst initialisiert werden, z.B. der CRTC.

Software die so etwas macht ist z.B. das Multiface II (auf Knopfdruck) und die Autostart-FutureOS-Cartridges für den Plus (bzw. das FutureOS lower ROM).

Für Spiele kann so etwas ein cooler Effekt sein :-)
TFM of FutureSoft
http://www.futureos.de --> Das Betriebssystem FutureOS (Update: 20.12.2023)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 26.12.2021)