LavelASM/Screen Brightness...

geschrieben am 20.11.2011 14:15:35
( Link )
Hi ich benutze diesen Code um den Screen dunkler zu machen wenn die Special World geschafft wird:
Code
{InitCodeLabel}:
;INIT CODE GOES HERE
RTL
{MainCodeLabel}:
;MAIN CODE GOES HERE
LDA $1EEB
CMP #$83
BNE TheEnd
LDA #$04
STA $0DAE
TheEnd:
RTL

(ich füge das ganze mit dem LevelASM Tool ein)
So das funktionirt auch an und für sich alles... es wird dunkel wenn die Special World geschafft wurde etc.
aber beim Fadein ist dass Level für ein paar Sekunden noch "Hell" (benutze den windowing fade Patch).
Kann man das irgendwie ändern? Denn ich finde es sehr hässlich wenn auf einmal der Screen von der normalen helligkeit auf dunkel umspringt...
WAS, WIE, WO???? Ne, Ne ich bin nicht die Signatur ...
Ich putze hier nur.

Mein Hack:
<!-- m --><a class="postlink" href="http://www.youtube.com/user/conankun88#p/a/u/0/8vdcyGylrg0">http://www.youtube.com/user/conankun88# ... vdcyGylrg0</a><!-- m -->
geschrieben am 20.11.2011 14:46:46
( Link )
Das ganze in den INIT-Code packen?
geschrieben am 20.11.2011 16:20:22
( Link )
hab ich getestet ,aber dann blinkt es einmal für ne sekunde dunkel auf und wird direkt wieder hell...

wobei mir grade was im code des windowing patches auffällt...
Code
MainFades:		LDA #$0F
STA $0DAE

*hust* ja das ändere ich dann vllt. mal damit es klappt...
WAS, WIE, WO???? Ne, Ne ich bin nicht die Signatur ...
Ich putze hier nur.

Mein Hack:
<!-- m --><a class="postlink" href="http://www.youtube.com/user/conankun88#p/a/u/0/8vdcyGylrg0">http://www.youtube.com/user/conankun88# ... vdcyGylrg0</a><!-- m -->
geschrieben am 20.11.2011 16:38:00
( Link )
Das würde dann wahrscheinlich für alle Level gelten. Wenn nur das eine Level abgedunkelt werden soll, musst du vorher noch $010B überprüfen.
geschrieben am 20.11.2011 16:49:04
( Link )
Spoiler anzeigen
001 Dark.asm
0AE Dark.asm
0AF Dark.asm
0B0 Dark.asm
0B1 Dark.asm
0B2 Dark.asm
0B3 Dark.asm
0B5 Dark.asm
0B6 Dark.asm
0B7 Dark.asm
0B8 Dark.asm
104 Dark.asm
105 Dark.asm
106 Dark.asm
107 Dark.asm
108 Dark.asm
109 Dark.asm
10A Dark.asm
10F Dark.asm
111 Dark.asm
113 Dark.asm
11F Light_Dark.asm
122 Dark.asm
123 Dark.asm
125 Light_Dark.asm
126 Dark.asm
12c Light_Dark.asm
12D Dark.asm
132 Light_Dark.asm
133 Light_Dark.asm
bei allen anderen soll es normal gehen...

kann mir irgendwer helfen den windowing fade patch abzuwandeln?
Ich kenne mich mit asm einfach viel zu wenig aus um das zu schaffen
Code
;Makes fadeouts/fadeins custom by using windowing HDMA
;Version 1.1

HEADER
LOROM

!FreeRAM = $13C0 ;must be abs
!FreeSpace = $66823E

ORG $00C9EB ;NEW: Fix overworld mosaic screwup after you finish bonus level 000/100
BRA +
NOP #3
+

ORG $00A0A3
BRA +
NOP #3
+

ORG $009F37
JML MainFades
HijackReturn: RTS

ORG !FreeSpace
reset bytes
db "STAR"
dw End-Begin-$01
dw End-Begin-$01^$FFFF

Begin:
MainFades: LDA $1EEB
CMP #$83
BNE Light

Hier muss irgendwie die überprüfung der level hin ...
um dann zu den endsprechenden Labels zu springen

Dark: LDA #$04
STA $0DAE
JMP Start

Light_Dark LDA #$07
STA $0DAE
JMP Start

Light: LDA #$0F
STA $0DAE
Start:
INC !FreeRAM

LDA #$22
STA $41
STA $42
STA $43 ;setup HDMA properties
LDA #$20
TSB $44
LDA #$10
TRB $44

LDA !FreeRAM ;following wall of code sets up animated HDMA table algorithm-wise
LDY $0DAF
BNE +
EOR #$FF
+ ASL A
ASL A
ASL A
LDX #$0E
- STZ $04A0,x
STZ $04C0,x
STZ $04E0,x
STZ $0500,x
STZ $0520,x
STZ $0540,x
STZ $0560,x
STZ $0580,x
STZ $05A0,x
STZ $05C0,x
STZ $05E0,x
STZ $0600,x
STZ $0620,x
STZ $0640,x
INC A
CPX #$07
BCS +
DEC A
DEC A
+ STA $04A1,x
STA $04C1,x
STA $04E1,x
STA $0501,x
STA $0521,x
STA $0541,x
STA $0561,x
STA $0581,x
STA $05A1,x
STA $05C1,x
STA $05E1,x
STA $0601,x
STA $0621,x
STA $0641,x
REP 2 : DEX
BPL -
EOR #$FF
LDX #$0E
- DEC A
CPX #$07
BCS +
INC A
INC A
+ STA $04B0,x
STA $04D0,x
STA $04F0,x
STA $0510,x
STA $0530,x
STA $0550,x
STA $0570,x
STA $0590,x
STA $05B0,x
STA $05D0,x
STA $05F0,x
STA $0610,x
STA $0630,x
STA $0650,x
PHA
LDA #$FF
STA $04B1,x
STA $04D1,x
STA $04F1,x
STA $0511,x
STA $0531,x
STA $0551,x
STA $0571,x
STA $0591,x
STA $05B1,x
STA $05D1,x
STA $05F1,x
STA $0611,x
STA $0631,x
STA $0651,x
PLA
REP 2 : DEX
BPL - ;end of HDMA table setup code

LDA #$41 ;\
STA $4370 ; |
LDA #$26 ; |
STA $4371 ; |Enable HDMA
LDA.b #IndirectPtrs ; |
STA $4372 ; |
LDA.b #IndirectPtrs>>8 ; |
STA $4373 ; |
LDA.b #IndirectPtrs>>16 ; |
STA $4374 ; |
STZ $4377 ; |
LDA #$80 ; |HDMA enable
TSB $0D9F ;/

LDA !FreeRAM
CMP #31
BNE +

LDA $0DAF
BNE ++
REP #$10
LDX #$01BE
LDA #$FF
- STA $04A0,x ;clear HDMA table when done
STZ $04A1,x
DEX
DEX
BPL -
SEP #$10

++ STZ !FreeRAM
STZ $41
STZ $42 ;sets HDMA properties back to normal
STZ $43
LDA #$02
STA $44

LDA $0DAF ;Fading direction. $00 = Fadein, $01 = Fadeout
EOR #$01 ;reverse fading direction.
STA $0DAF
INC $0100 ;Gamemode++;

LDA #$80 ;HDMA clear
TRB $0D9F

+ JML HijackReturn

IndirectPtrs: db $F0 : dw $04A0 ;Ptrs for indirect hdma
db $F0 : dw $0580
db $00
End:
print bytes

WAS, WIE, WO???? Ne, Ne ich bin nicht die Signatur ...
Ich putze hier nur.

Mein Hack:
<!-- m --><a class="postlink" href="http://www.youtube.com/user/conankun88#p/a/u/0/8vdcyGylrg0">http://www.youtube.com/user/conankun88# ... vdcyGylrg0</a><!-- m -->
geschrieben am 20.11.2011 19:10:23
( Link )
Code
;Makes fadeouts/fadeins custom by using windowing HDMA
;Version 1.1

HEADER
LOROM

!FreeRAM = $13C0 ;must be abs
!FreeSpace = $66823E

ORG $00C9EB ;NEW: Fix overworld mosaic screwup after you finish bonus level 000/100
BRA +
NOP #3
+

ORG $00A0A3
BRA +
NOP #3
+

ORG $009F37
JML MainFades
HijackReturn: RTS

ORG !FreeSpace
reset bytes
db "STAR"
dw End-Begin-$01
dw End-Begin-$01^$FFFF

Begin:
MainFades: LDA $1EEB
CMP #$83
BNE Start
LDX $010B
LDA Table,x
STA $0DAE
BRA Normal

Start: LDA #$0F
STA $0DAE
Normal: INC !FreeRAM

LDA #$22
STA $41
STA $42
STA $43 ;setup HDMA properties
LDA #$20
TSB $44
LDA #$10
TRB $44

LDA !FreeRAM ;following wall of code sets up animated HDMA table algorithm-wise
LDY $0DAF
BNE +
EOR #$FF
+ ASL A
ASL A
ASL A
LDX #$0E
- STZ $04A0,x
STZ $04C0,x
STZ $04E0,x
STZ $0500,x
STZ $0520,x
STZ $0540,x
STZ $0560,x
STZ $0580,x
STZ $05A0,x
STZ $05C0,x
STZ $05E0,x
STZ $0600,x
STZ $0620,x
STZ $0640,x
INC A
CPX #$07
BCS +
DEC A
DEC A
+ STA $04A1,x
STA $04C1,x
STA $04E1,x
STA $0501,x
STA $0521,x
STA $0541,x
STA $0561,x
STA $0581,x
STA $05A1,x
STA $05C1,x
STA $05E1,x
STA $0601,x
STA $0621,x
STA $0641,x
REP 2 : DEX
BPL -
EOR #$FF
LDX #$0E
- DEC A
CPX #$07
BCS +
INC A
INC A
+ STA $04B0,x
STA $04D0,x
STA $04F0,x
STA $0510,x
STA $0530,x
STA $0550,x
STA $0570,x
STA $0590,x
STA $05B0,x
STA $05D0,x
STA $05F0,x
STA $0610,x
STA $0630,x
STA $0650,x
PHA
LDA #$FF
STA $04B1,x
STA $04D1,x
STA $04F1,x
STA $0511,x
STA $0531,x
STA $0551,x
STA $0571,x
STA $0591,x
STA $05B1,x
STA $05D1,x
STA $05F1,x
STA $0611,x
STA $0631,x
STA $0651,x
PLA
REP 2 : DEX
BPL - ;end of HDMA table setup code

LDA #$41 ;\
STA $4370 ; |
LDA #$26 ; |
STA $4371 ; |Enable HDMA
LDA.b #IndirectPtrs ; |
STA $4372 ; |
LDA.b #IndirectPtrs>>8 ; |
STA $4373 ; |
LDA.b #IndirectPtrs>>16 ; |
STA $4374 ; |
STZ $4377 ; |
LDA #$80 ; |HDMA enable
TSB $0D9F ;/

LDA !FreeRAM
CMP #31
BNE +

LDA $0DAF
BNE ++
REP #$10
LDX #$01BE
LDA #$FF
- STA $04A0,x ;clear HDMA table when done
STZ $04A1,x
DEX
DEX
BPL -
SEP #$10

++ STZ !FreeRAM
STZ $41
STZ $42 ;sets HDMA properties back to normal
STZ $43
LDA #$02
STA $44

LDA $0DAF ;Fading direction. $00 = Fadein, $01 = Fadeout
EOR #$01 ;reverse fading direction.
STA $0DAF
INC $0100 ;Gamemode++;

LDA #$80 ;HDMA clear
TRB $0D9F

+ JML HijackReturn

IndirectPtrs: db $F0 : dw $04A0 ;Ptrs for indirect hdma
db $F0 : dw $0580
db $00

Table:
db $0F,$04,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 0-F
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 10-1F
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 20-2F
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 30-3F
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 40-4F
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 50-5F
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 60-6F
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 70-7F
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 80-8F
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 90-9F
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$04,$04 ; Levels A0-AF
db $04,$04,$04,$04,$0F,$04,$04,$04,$04,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels B0-BF
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels C0-CF
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels D0-DF
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels E0-EF
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels F0-FF
db $0F,$0F,$0F,$0F,$04,$04,$04,$04,$04,$04,$04,$0F,$0F,$0F,$0F,$04 ; Levels 100-10F
db $0F,$04,$0F,$04,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$07 ; Levels 110-11F
db $0F,$0F,$04,$04,$0F,$07,$04,$0F,$0F,$0F,$0F,$0F,$07,$04,$0F,$0F ; Levels 120-12F
db $0F,$0F,$07,$07,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 130-13F
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 140-14F
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 150-15F
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 160-16F
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 170-17F
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 180-18F
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 190-19F
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 1A0-1AF
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 1B0-1BF
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 1C0-1CF
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 1D0-1DF
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 1E0-1EF
db $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F ; Levels 1F0-1FF
End:
print bytes

das hab ich jetzt zusammengeschrieben... und es tut einfach nix
es bleibt trotzdem so wie vorher dabei sollte es ja eigentlich jetzt die screenbrightness aus dem Table unten nehmen...
WAS, WIE, WO???? Ne, Ne ich bin nicht die Signatur ...
Ich putze hier nur.

Mein Hack:
<!-- m --><a class="postlink" href="http://www.youtube.com/user/conankun88#p/a/u/0/8vdcyGylrg0">http://www.youtube.com/user/conankun88# ... vdcyGylrg0</a><!-- m -->
geschrieben am 20.11.2011 19:15:49
( Link )
$010B ist 16-bit (= 2 Bytes lang). Damit du die richtigen Werte aus der Tabelle holst, muss auch X dann 16-bit sein.

Code
PHP
REP #$10
LDX $010B
LDA Table,x
PLP
STA $0DAE


Kann aber nicht garantieren, dass das Problem auch nur darin besteht.

...und benutzt du wirklich Free Space in Bank 66? Eigentlich sollte dieser Code in Banks über 3F gar nicht laufen.
geschrieben am 20.11.2011 19:23:45
zuletzt bearbeitet von mzünni am 20.11.2011 20:29:34.
( Link )
YAY danke WYE es klappt

aber wieso sollte der in banks über 3F eigentlich nicht funktioniren?
ich hab ganz einfach einen aus der slogger datei genommen...
hat bisher immer geklappt
WAS, WIE, WO???? Ne, Ne ich bin nicht die Signatur ...
Ich putze hier nur.

Mein Hack:
<!-- m --><a class="postlink" href="http://www.youtube.com/user/conankun88#p/a/u/0/8vdcyGylrg0">http://www.youtube.com/user/conankun88# ... vdcyGylrg0</a><!-- m -->
geschrieben am 20.11.2011 20:27:22
( Link )
Byte- oder Word-Adressierung (?) funktioniert dort normalerweise nicht.

Sachen wie LDA $0DBF laden zum Beispiel eigentlich nicht aus $7E0DBF, sondern aus der Bank, in der auch der Code ist. Wäre das LDA $0DBF beispielsweise in Bank 10, würde aus $100DBF geladen werden. Das ist normalerweise nicht weiter schlimm, denn $xx0000 bis $xx7FFF sind direkte Kopien von $7E0000 bis $7E7FFF (das heißt, was an dem einen Ort geändert wird, ändert sich auch am anderen). Diese Verbindung besteht aber nur in den Banks 00 bis 3F, ab Bank 40 also nicht mehr! Steht der Code also zum Beispiel in Bank 66, lädt LDA $0DBF nicht mehr aus $7E0DBF, sondern aus... ich weiß nicht wo, wahrscheinlich aus $660DBF... jedenfalls nicht aus der Adresse, die du haben willst. Das Problem kann man ganz einfach lösen, indem man in Banks über 40 durchgehend Long Addressing benutzt (LDA $7E0DBF), um sicherzustellen, dass man auch wirklich aus der richtigen Adresse lädt, oder indem man diese Banks einfach gar nicht für Code nutzt, sondern nur für Daten (/Tabellen).

Warum es bei dir trotzdem funktioniert - warum also in Bank 66 LDX $010B nicht aus $66010B, sondern wie gewünscht aus $7E010B lädt - ist mir ein Rätsel.
geschrieben am 20.11.2011 20:43:15
( Link )
vllt bezieht sich das
Zitat
Byte- oder Word-Adressierung (?) funktioniert dort normalerweise nicht.

auf die PC adresse.
(PC adresse 330000 wäre ja ca.668000 als snes adresse...)
oder ....
ich hab keine ahnung.
WAS, WIE, WO???? Ne, Ne ich bin nicht die Signatur ...
Ich putze hier nur.

Mein Hack:
<!-- m --><a class="postlink" href="http://www.youtube.com/user/conankun88#p/a/u/0/8vdcyGylrg0">http://www.youtube.com/user/conankun88# ... vdcyGylrg0</a><!-- m -->
geschrieben am 20.11.2011 21:21:41
( Link )
Nö, die PC-Adresse ist kaum vom Bedeutung.

Na ja, was soll's.