Allgemeine Hex- und ASM-Fragen

geschrieben am 15.12.2012 16:46:08
( Link )
Was müsste ich denn verändern, um die Palette der Turnblock Bridge zu ändern? Das was bei SMWCentral in der Rom Map steht funktioniert nämlich, zumindest für mich, nicht.
No PDA here
geschrieben am 16.12.2012 21:53:42
( Link )
Wie kann ich "einstellen", dass HDMA mit den BG scrollt?
geschrieben am 16.12.2012 22:16:42
( Link )
Das ist überraschend schwer - HDMA betrifft schließlich den Bildschirm an sich, und der gibt einen Dreck darauf, wo sich Layer 2 gerade befindet.

Du kannst aber effect1.asm aus dem hier anpassen.
geschrieben am 16.12.2012 22:28:50
( Link )
Zitat von WYE:
Das ist überraschend schwer - HDMA betrifft schließlich den Bildschirm an sich, und der gibt einen Dreck darauf, wo sich Layer 2 gerade befindet.

Du kannst aber effect1.asm aus dem hier anpassen.


Danke, dass hilft mir echt weiter.
geschrieben am 21.12.2012 20:46:05
( Link )
So ich mal wieder!

Wollte den Pause Menu Patch von Iceguy einfügen.
Allerdings bekomm ich eine Fehlermeldung dabei: "write.asm:384: error: Unknown command. [JSR (MenuPtr,x)]"..
Bin in die Zeile gegangen und hab einfach mal ein ; davor gesetzt.

Jetzt lässt sich der Patch einfügen und das Menü wird auch aufgerufen, allerdings ohne Schriftzug und interaktionen..
Kann mir jemand Helfen? :/
geschrieben am 21.12.2012 21:45:53
( Link )
Was für einen Assembler benutzt du? Deiner scheint die Syntax nicht zu kennen. Probier mal Asar aus, oder xkas v0.06, wenn du das nicht eh schon tust.
geschrieben am 21.12.2012 21:53:11
( Link )
Zitat von WYE:
Was für einen Assembler benutzt du? Deiner scheint die Syntax nicht zu kennen. Probier mal Asar aus, oder xkas v0.06, wenn du das nicht eh schon tust.


Benutze Asar.
Und ja, ich habe ;@xkas in die oberste Zeile gesetzt, damit Asar es als xkas Patch einfügt, falls es jemand wissen will.
Das mit den Menü ist aber nicht mehr so wichtig, kann da drauf verzichten.
geschrieben am 21.12.2012 22:40:22
( Link )
Dann probiere mal, das ;@xkas zu entfernen. Vielleicht bringt das Asar dazu, diesen Opcode nicht zu kennen.
geschrieben am 22.12.2012 15:14:54
( Link )
Ja ich weiß, ich poste in Moment ziemlich viele Fragen
Aber ich hab mal wieder ein Problem!

Ich habe zusätzlich zu den Normalen BG einen Layer 3 "BG" eingefügt. Das funktioniert auch alles gut und bisher konnte ich die Probleme, die dadurch entstehen alleine lösen. Aber das hier bereitet mir echt Kopfschmerzen:



In Bild 1 ist der Layer 3 irgendwie verschoben für ein paar Frames und dann wird er ruckartig wieder Normal.. Meistens bemerkt man es gar nicht, aber wenn sieht es verdammt hässlich aus.

Zur Info: Das ist die Röhre, durch die man das Level startet. Wenn ich von der OW das Level betrete passiert gar nichts. Nur wenn ich in die Röhre durch ein Sublevel komme passiert das (Das Sublevel hat die selben H- und V-Scroll Einstellungen wie das Main Level, falls das wichtig ist).
Das selbe passiert auch, wenn ich durch den Midway Point in das Level komme.
geschrieben am 22.12.2012 15:31:55
( Link )
Gab's da irgendwelchen Code zu? Wenn ja, dann in levelinit damit.
geschrieben am 22.12.2012 15:50:30
( Link )
Zitat von WYE:
Gab's da irgendwelchen Code zu? Wenn ja, dann in levelinit damit.


Wobei meinst du? Hab den Hintergrund mit Terra Stripe gemacht, dann noch einen Generator eingefügt, der dafür sorgt, dass der Hintergrund anders scrollt. :/
geschrieben am 22.12.2012 15:56:27
( Link )
Zitat von Bladey:
Generator

Da haben wir's ja - Generatoren haben keine INIT-Routine und führen ihren Code deshalb nicht aus, wenn das Level lädt. Für Effekte, die nicht erst wirken sollen, wenn das Level ganz geladen ist, sind Generatoren gänzlich ungeeignet.

Poste mal den Code.
geschrieben am 22.12.2012 16:08:49
( Link )
Hier:
Code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Layer 3 H-Scroll
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; sprite code JSL
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dcb "INIT"
RTL
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; main sprite code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dcb "MAIN"

REP #$20
LDA $1E
LSR
STA $22
SEP #$20

RTL
geschrieben am 22.12.2012 16:44:31
( Link )
Hier - als Sprite einfügen, nicht als Generator, dann sollte es zumindest besser klappen.
Code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Layer 3 H-Scroll
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; sprite code JSL
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dcb "INIT"
REP #$20
LDA $1E
LSR
STA $22
SEP #$20
RTL
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; main sprite code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dcb "MAIN"

REP #$20
LDA $1E
LSR
STA $22
SEP #$20

RTL
geschrieben am 22.12.2012 17:21:22
( Link )
Zitat von WYE:
Hier - als Sprite einfügen, nicht als Generator, dann sollte es zumindest besser klappen.


Es klappt! Danke WYE, du bist der beste!
geschrieben am 24.12.2012 16:14:03
( Link )
Ich habe vorhin einen Block gemacht der den Switch Off stellen soll wenn er On ist,
und ihn On stellen soll wenn er Off ist.

Wenn der Switch Off ist, dann stellt er ihn auch On, wenn ich den Block benutze,
aber wenn er On ist und ich den Block dann benutze, dann geht der Switch nicht Off..

Hab mich leider noch nicht so lang mit ASM auseinandergesetzt und weis daher auch nicht woran es genau liegt..

Code

db $42

JMP MarioBelow : JMP MarioAbove : JMP MarioSide
JMP SpriteV : JMP SpriteH
JMP Cape : JMP Fireball
JMP MarioCorner : JMP MarioHead : JMP MarioBody

MarioBelow:
MarioAbove:
RTL

MarioSide:
LDA $14AF ; \ If the ON/OFF switch is ON...
BNE Label_0000 ; /
LDA #$01 ; \ Turn the ON/OFF switch OFF...
STA $14AF ; /
Label_0000: ; > --------
LDA $14AF ; \ If the ON/OFF switch is OFF...
BNE Label_0001 ; /
BRA Label_0002
Label_0001:
STZ $14AF ; > Turn the ON/OFF switch ON...
Label_0002: ; > --------


SpriteV:
SpriteH:
Cape:
Fireball:
MarioCorner:
MarioHead:
MarioBody:
RTL


Auserdem; sind irgendwelche Teile des Codes unnötig? Ich habe den Code von einem anderen Block genommen und angepasst.. Lern ich bestimmte noch, hoffe ich..
______________________________________
Ich war der Beste in Mathe; bis die Zwei kam: 0001,0010,0011,0100,0101,0110,0111,1000..

01000100 01001111 01001101 01001001 01001110 01001001 01001011
geschrieben am 24.12.2012 16:45:12
( Link )
Probiers mal so:

Code
db $42
JMP MarioBelow : JMP MarioAbove : JMP MarioSide : JMP SpriteV : JMP SpriteH : JMP MarioCape : JMP MarioFireBall
JMP Corner : JMP HeadIn : JMP BodyIn

Corner:
HeadIn:
BodyIn:
MarioAbove:
MarioBelow:
MarioSide:
MarioBelow:
LDA $14AF ; Wenn der Switch auf ON steht:
BNE Label_1
LDA #$01 ; Schalte ihn aus!
STA $14AF
Label_1:
LDA $14AF ; Wenn der Switch auf OFF steht:
BEQ Label_2
STZ $14AF ; Schalte ihn an!
Label_2:
SpriteV:
SpriteH:
MarioCape:
MarioFireBall:
GotCoins:
RTL
geschrieben am 24.12.2012 17:06:04
( Link )
Dann kommt:

error: temp.asm: line13: string [MarioBelow] already defined [MarioBelow:]

Den Fehler habe ich auskorrigiert..

Aber auch dann ist genau das selbe Problem vorhanden..
______________________________________
Ich war der Beste in Mathe; bis die Zwei kam: 0001,0010,0011,0100,0101,0110,0111,1000..

01000100 01001111 01001101 01001001 01001110 01001001 01001011
geschrieben am 24.12.2012 17:16:59
( Link )
Ist ja klar. Was euer Code macht, ist folgendes:
Zitat von Der Code:
Steht der Schalter auf ON? JA? Dann schalte ich ihn jetzt OFF! Okay, jetzt ist er OFF! Ist er jetzt OFF? Ja? Dann schalte ich ihn jetzt ON!

So ist er natürlich immer an. Vergesst die Return-Befehle nicht, sonst wird der ganze Code auf einmal ausgeführt.

Hier, das geht beinahe unendlich viel eleganter.

Code
db $42 : JMP M : JMP M : JMP M : JMP R : JMP R : JMP R : JMP R : JMP M : JMP M ; : JMP M
M: LDA $14AF
EOR #$01
STA $14AF
R: RTL
geschrieben am 24.12.2012 17:34:22
( Link )
Danke WYE,

ich glaube ich werde mir mal ein paar Codes anschauen um sie wirklich zu verstehen, ich glaub das hilft mir weiter..

Und ja, das ist um vielfaches eleganter..
______________________________________
Ich war der Beste in Mathe; bis die Zwei kam: 0001,0010,0011,0100,0101,0110,0111,1000..

01000100 01001111 01001101 01001001 01001110 01001001 01001011