Romi's Sprites: Airship Nut

geschrieben am 12.02.2011 20:36:52
( Link )
Hallo alle zusammen.

Ich habe zwar gesehen, dass es schonmal einen Thread bzgl. Romi's Sprite gab, allerdings wollte ich diesen nicht bumpen. Chris und ich haben ein Problem mit diesem Sprite. Wir haben beide Schritt für Schritt das getan, was in der Readme stand, DrawInfo.asm und Suboffscreen.asm gepatcht und in der anderen Datei (diese Definition.asm oder so) die entsprechenden Freespacestellen angegeben und jene Datei in unseren Sprites Ordner gepackt. Wenn wir nun die Airship Nut (diese Schraube, die sich bewegt, wenn Mario drauf springt) in unser Level einfügen, ist jene vorhaden, aber sie fällt sofort nach unten. Die Map16 Tiles verhalten sich genauso, wie in der entsprechenden Readme angeben wurde. Nichts zu machen, das Ding fällt grundsätzlich durch alles hindurch. Hat jemand diese Sprite erfolgreich zum Laufen gekriegt? Es kann ja nicht sein, dass Chris und ich zu doof dazu sind.
geschrieben am 12.02.2011 23:39:05
( Link )
Wir sind nicht auf SMWC , deshalb kann man ruhig alle Threads bumpen.
Brutal Mario ist out.Spielt mal SMW FreedoMN,1Updudes-Hacks,The Devious Four Chronicles oder Chomps Attacke!
geschrieben am 14.02.2011 21:52:41
( Link )
Das Problem hat sich gelöst, es lag an Levelmode 1F (darauf soll man erstmal kommen...).
geschrieben am 20.02.2011 12:18:34
( Link )
ich hätte gern gewusst wie mann überhaupt die Sprites von Romi einfügt, ich patch anscheinend irgendwas falsch, obwohl ich alles so mach wie es im Readme beschrieben ist, entweder haut sprite tool nen Error raus, oder wenn ich es doch geschaft hab zu inserten startet das Level nicht. Kann mir jemand eine genaue beschreibung geben wie das geht?
geschrieben am 24.02.2011 14:39:11
( Link )
Jau, ich fang mal an.

Du hast in der .rar Datei ja die Sprite sowie die .asm Dateien. Wichtig sind SuboffScreen.asm und GetDrawInfo.asm. Die patchst du auf zwei unterschiedliche, freie Freespace Stellen.

So sehen meine aus:

SuboffScreen.asm

Spoiler anzeigen
header
lorom

org $3F8090

START_SUB: STZ $03
PHB
LDA #$01
PHA
PLB
PEA $801F
JML $81AC33


GetDrawInfo.asm

Spoiler anzeigen
header
lorom

org $3F8000

GET_DRAW_INFO: STZ $186C,x
STZ $15A0,x
LDA $E4,x
CMP $1A
LDA $14E0,x
SBC $1B
BEQ ON_SCREEN_X
INC $15A0,x

ON_SCREEN_X: LDA $14E0,x
XBA
LDA $E4,x
REP #$20
SEC
SBC $1A
CLC
ADC #$0040
CMP #$0180
SEP #$20
ROL A
AND #$01
STA $15C4,x
BNE INVALID

PHB
PHK
PLB
LDY #$00
LDA $1662,x
AND #$20
BEQ ON_SCREEN_LOOP
INY
ON_SCREEN_LOOP: LDA $D8,x
CLC
ADC SPR_T1,y
PHP
CMP $1C
ROL $00
PLP
LDA $14D4,x
ADC #$00
LSR $00
SBC $1D
BEQ ON_SCREEN_Y
LDA $186C,x
ORA SPR_T2,y
STA $186C,x
ON_SCREEN_Y: DEY
BPL ON_SCREEN_LOOP

LDY $15EA,x
LDA $E4,x
SEC
SBC $1A
STA $00
LDA $D8,x
SEC
SBC $1C
STA $01
PLB
RTL

INVALID: REP #$20
PLA
PLY
PLA
PHY
PHA
SEP #$20
RTL

SPR_T1: db $0C,$1C
SPR_T2: db $01,$02


Du siehst, zwei unterschiedliche Freespacestellen. Diese beiden Patches bügelst du nun per xkas auf deine Rom. Dann packst du deine Rom und die definition.asm in deinen Spritetoolordner (und die gewünschten Sprites logischerweise in den Spritesordner...). Du öffnest definition.asm und fügst dort die Freespacestellen für GetDrawInfo.asm und SuboffScreen.asm ein.

definition.asm

Spoiler anzeigen
GetDrawInfo = $3F8000 ; change this to wherever you insert GetDrawInfo.asm
SubOffScreen = $3F8090 ; change this to wherever you insert SubOffScreen.asm


Anschließend kopierst du definition.asm und benennst die Kopie in xkas_def.asm um (einige von Romis Sprites beziehen sich nicht auf definition.asm, sondern auf xkas_def.asm, das Kopieren und Umbenennen ist also eine Variante, um auch diese Sprites abzudecken, alternativ kannst du in den jeweiligen .asm Dateien der Sprites auf definition.asm verweisen, oben genannte Variante ist allerdings zeitsparender).

Wenn die Freespacestellen in definition.asm und xkas_def.asm mit denen aus SuboffScreen.asm und GetDrawInfo.asm übereinstimmen, kannst du die Sprites per Spritetool einfügen, du musst diese beiden .asm Dateien NICHT auf deine ROM patchen, das wird per Spritetool automatisch gemacht. Dann sollte eigentlich alles klappen. Ich hoffe, das hat geholfen.
geschrieben am 24.02.2011 15:33:00
( Link )
Danke! ich probiere es gleich ma aus, danke nochmal!
geschrieben am 24.02.2011 16:01:50
( Link )
Danke mir, wenn es klappen sollte. Ich hatte bei SMWCentral viel zu dem Thema gelesen, deswegen funktionierte es glücklicherweise bei mir auf Anhieb, aber viele Leute schilderten die gleichen Probleme wie du, und die Antwort war meistens irgendeine Freespaceproblem mit den Patches oder die falsche Anwendung jener. Sollten noch Fragen bestehen, frag einfach.