Zitat von RPG Hacker: Sind vermutlich für ROMs mit HiROM-Adressierung gedacht. Ich gehe mal davon aus, dass die optional sind und man die nur braucht, wenn man auch wirklich HiROM verwendet.
Eigentlich expandieren die beiden Dateien die ROM. Es wird (bzw. vielleicht auch wurde, da man mit LM auch SA-1 ROMs bearbeiten kann) benötigt, da manche Sachen bei einer SA-1-ROM ein bisschen anders funktionieren (so musste z.B. der Header kopiert werden und für eine SA-1-ROM, die man mit ZSNES benutzen kann, auch noch einige extra Schritte gemacht).
Du kannst auch gerne zu mir MFG659 sagen (ich heiße übrigens in CreepTD wegen dem limitierten Platz wirklich MFG659)
Ich kann einige (ASM)-Codes fixen. <!-- s:) -->:)<!-- s:) -->
Das liegt darin, dass die Plattformen die zweithöchste Priorität haben d.h. abgesehen von Layer 3 mit Priorität, wenn der Layer 3-Prioritäts-Bit gesetzt wird (z.B. an der Status Bar oder wenn man bei den Layer 3-Einstellungen "Force Layer 3 tiles with priority..." aktiviert hat), können sie abgesehen von Sprites (bei Sprite über Sprite wird es anders geregelt) niemals hinter etwas gehen. Am schlimmsten ist es, dass man es sogar manuell machen muss d.h. mit Tweaker hat man keine Chance. Versuch mal mit diesen Code:
Codeorg $02DC27
db $02,$02,$42,$02,$02,$02,$42,$02
org $02B5EC ; Dies sind übriges ungenutzte Daten in SMW also (wahrscheinlich) nicht schlimmes.
LDA $DC27
ORA $64
RTS
org $02DC91
JSR $02B5EC
Du kannst auch gerne zu mir MFG659 sagen (ich heiße übrigens in CreepTD wegen dem limitierten Platz wirklich MFG659)
Ich kann einige (ASM)-Codes fixen. <!-- s:) -->:)<!-- s:) -->
Probiere es hiermit:
Code!DragonCoins = $1422 ; Falls es nicht funktioniert, nutzt stattdessen $1420
JMP Mario : JMP Mario : JMP Mario
JML Return : JML Return
JML Return : JML Return
JMP Mario : JMP Mario : JMP Mario
Mario:
LDA !DragonCoins
BNE Return
LDA #$02 ; Replace block with block # 025
STA $9C
PHY
JSL $00BEB0 ; Make the block disappear.
PLY
DEC !DragonCoins
Return:
RTL
Um es dauerhaft aktiviert haben zu wollen, musst du #$02 zu #$01 umändern und du benötigst auch noch
diesen Patch. Pass aber auf, dass du an der Reihe (im ähnlichen Sinne einer Spalte einer Tabelle), wo der Block ist, keine Münzen o.ä. platzierst, außer beide Blöcke sind auf unterschiedlichen Screen-Hälften.
CodeLDY $57
JSR GetItemMemoryBit
LDA $0F
BNE .return
LDA #$xx ; Das ist die Nummer, wo das Map16-Tile ist ohne die Seite
STA [$6B],y
LDA #$yy ; Das ist die Seite, wo das Map16-Tile ist
STA [$6E],y
.return
RTS
Du kannst auch gerne zu mir MFG659 sagen (ich heiße übrigens in CreepTD wegen dem limitierten Platz wirklich MFG659)
Ich kann einige (ASM)-Codes fixen. <!-- s:) -->:)<!-- s:) -->
Ups, habe statt BEQ BNE geschrieben.
Und beim unteren Code habe vergessen zu schreiben, dass für den Patch, den ich gelinkt habe, benutzt wird.
Du kannst auch gerne zu mir MFG659 sagen (ich heiße übrigens in CreepTD wegen dem limitierten Platz wirklich MFG659)
Ich kann einige (ASM)-Codes fixen. <!-- s:) -->:)<!-- s:) -->
Dass der Block darüber verschwinden soll ist kein Problem. Hier ist der Code:
Codedb $42
JMP Mario : JMP Mario : JMP Mario
JML Return : JML Return
JML Return : JML Return
JMP Mario : JMP Mario : JMP Mario
Mario:
LDA $1420
BEQ Return
LDA #$01 ; Replace block with block # 025
STA $9C
PHY
JSL $00BEB0 ; Make the block disappear.
REP #$20
LDA $98
SEC : SBC #$0010
STA $98
SEP #$20
JSL $00BEB0 ; Make the block disappear.
PLY
DEC $1420
DEC $1422
Return:
RTL
Bei Objectool ist es wiederum einfach, nur muss ich den Code ein bisschen verändern, da der eben
32x32 (Edit: Habe ich wirklich 32x32 geschrieben? Ich meinte nämlich) 16x32 ist. Okay, zuerst öffnest du objectool04.asm und setzt den Freespace. Danach öffnest du custobjcode.asm und wählst irgend einen Lable (außer die, die im Namen "CustObj2D" stehen). Der Code, den du nehmen solltest, ist übrigens hier:
CodeLDY $57
JSR GetItemMemoryBit
LDA $0F
BNE .return
LDA #$xx ; Das ist die Nummer, wo das Map16-Tile ist ohne die Seite
STA [$6B],y
LDA #$yy ; Das ist die Seite, wo das Map16-Tile ist
STA [$6E],y
JSR ShiftObjUp
LDA #$ww ; Das ist die Nummer, wo das Map16-Tile ist ohne die Seite
STA [$6B],y
LDA #$vv ; Das ist die Seite, wo das Map16-Tile ist
STA [$6E],y
.return
RTS
Das Format bei ww und vv ist ähnlich wie bei xx und yy. xx und yy gehören zum unteren Tile während es sich bei ww und vv um das Obere handelt. Dann musst du es auch noch patches (logischerweise). Was ich auch noch vergessen habe ist, dass du bei Options > General Options "Correct Fatal Errors" deaktiviert haben solltest, sonst erscheint eine Fehlermeldung von LM (ohne Objectool würde irgendwas passieren, da diese eben nie genutzt worden sind). Ansonsten musst du das Objekt manuell einfügen (ähnlich wie custom Sprites).
Du kannst auch gerne zu mir MFG659 sagen (ich heiße übrigens in CreepTD wegen dem limitierten Platz wirklich MFG659)
Ich kann einige (ASM)-Codes fixen. <!-- s:) -->:)<!-- s:) -->
Wichtig sind nur "Command" und "Size/Type/Ext". "Extension" wird nur für Objekt 2D also für selbst erstellte normale Objekte benutzt. Die Besonderheit bei den erweiterten (extended) Objekten ist, dass alle von ihnen Objekt 00 sind ("Command" sollte deswegen 0 sein), der Typ wird durch "Size/Type/Ext" ausgewählt (wenn du mal gefragt hast, warum man keine erweiterte Objekte vergrößern kann, hier ist der Grund).
Du kannst auch gerne zu mir MFG659 sagen (ich heiße übrigens in CreepTD wegen dem limitierten Platz wirklich MFG659)
Ich kann einige (ASM)-Codes fixen. <!-- s:) -->:)<!-- s:) -->
ZitatCode LDA EXTRA_PROP_2,x
STA $1DFB
Interessant. Die Musik wird durch die CFG-Datei ausgewählt d.h. du musst sie mit den CFG Editor (ist mit Sprite Tool mitgeliefert) öffnen und den zweite extra Eigenschaft Byte (Extra Property Byte 2) verändern. Alternativ kannst du sie in Notepad öffnen. Dann siehst du das hier:
Code1
36
0 0 30 82 b9 44
0 c
level_ender.asm
1
Wichtig ist nur c. Dies ist der zweite extra Eigenschaft Byte Die Todes-Musik kann man einfach Addmusic_list.txt nachgucken.
Und wenn du sie trotzdem nicht errätst, es ist Musik 1. Du kannst auch gerne zu mir MFG659 sagen (ich heiße übrigens in CreepTD wegen dem limitierten Platz wirklich MFG659)
Ich kann einige (ASM)-Codes fixen. <!-- s:) -->:)<!-- s:) -->
Das ist eigentlich ganz simpel. Beim ersten Trick (der übrigens schon im Code drin ist) muss man ein AND nutzen. Dies hat aber das Problem, dass man nur die Zahlen $01, $03, $07, $0F, $1F, $3F, und $7F nutzen kann. Für Zahlen dazwischen benötigt man
diesen Code (du musst nicht alles kopieren, nur den oberen Teil). Ansonsten muss man bei beiden Zahlen. Die Formel ist ganz einfach x=(224-r)/2 wo r die Reichweite ist (beachte aber, dass du zum Trick mit den AND eins zur Zahl hinzuaddieren musst, bevor du es für r einsetzt). Die Anfang des Codes wäre nämlich dann so (Trick mit AND):
Code JSL $01ACF9
AND #$rr
CLC
ADC #$xx
CLC
ADC $1C
STA $D8,x
bzw. so (Trick mit den gelinkten Code):
Code LDA #$rr
JSL RANDOM
CLC
ADC #$xx
CLC
ADC $1C
STA $D8,x
Du kannst auch gerne zu mir MFG659 sagen (ich heiße übrigens in CreepTD wegen dem limitierten Platz wirklich MFG659)
Ich kann einige (ASM)-Codes fixen. <!-- s:) -->:)<!-- s:) -->
Zitat von Err0rLP: Nettes Level. Mich irritieren aber etwas die äpfel unten. warum nutzt du da andere wie oben?
Der Busch und die Äpfel sind auf Layer 3 gemachr worden und das kann ohne Ausnahme nur 3 Farben und Transparent anzeigen.
Du kannst auch gerne zu mir MFG659 sagen (ich heiße übrigens in CreepTD wegen dem limitierten Platz wirklich MFG659)
Ich kann einige (ASM)-Codes fixen. <!-- s:) -->:)<!-- s:) -->
Zitat von RPG Hacker: Ja, das Projekt war immer in der einen oder anderen Form irgendwo in meiner To-Do-Liste drin, wenn auch mit schwankender Priorität. Und da ich mit meinen Engines so oft komplett von vorne bei Punkt 0 anfange, geht es auch etwas langsam voran. Aber aufgegeben habe ich es nach wie vor nicht.
Bam, Plot-Twist. Ne, ersthaft, ich habe auch geglaubt, dass das Projekt abgebrochen worden ist.
Du kannst auch gerne zu mir MFG659 sagen (ich heiße übrigens in CreepTD wegen dem limitierten Platz wirklich MFG659)
Ich kann einige (ASM)-Codes fixen. <!-- s:) -->:)<!-- s:) -->
Dass bestimmte Hacks nicht auf echter Hardware läuft liegt darin, dass die Ersteller nicht darüber gekümmert haben (hauptsächlich wegen den alten Addmusics). Dies war auch bis 2012 auch ein standard auf SMWC. Irgendwann wurde auf SMWC BSNES (ein extrem akkurater SNES-Emulator) gezeigt und dort wurde dann die Regel eingeführt, dass alle Sachen (insbesondere die Musiken und die Addmusics selber) bei den Sectionen, welche nach der Einführung der Regel hochgeladen sind*, auf echter Hardware (bzw. in dem Fall, BSNES) laufen müssen.
Die einzige Ausnahme ist, wenn der Hack einen Erweiterungschip (z.B. SA-1) nutzt. Auch diese Hacks funktionieren auf echter Hardware nicht, was aber daran liegt, dass SD2SNES keins solcher Chips unterstützt und nicht, weil sie inkompatibel sind.
*Beachte aber, dass inkompatible Hacks normalerweise nicht gelöscht werden. Diese habe haben aber den Tag "fixme" in der Beschreibung und funktionieren ebenfalls nicht auf echter Hardware bzw. akkuraten Emulatoren.
Um übrigens herauszufinden, dass der Hack auf echter Hardware läuft, solltest du ihn mit BSNES oder zumindest mit einer neuen Version von SNES9x öffnen. Wenn da die Musik crasht, dann ist es ein Hack mit einer alten Addmusic (natürlich gibt es Fälle mit anderen Problemen welche an der Inkompatibilität liegen aber die sind eher Einzelfälle).
Du kannst auch gerne zu mir MFG659 sagen (ich heiße übrigens in CreepTD wegen dem limitierten Platz wirklich MFG659)
Ich kann einige (ASM)-Codes fixen. <!-- s:) -->:)<!-- s:) -->