Points of Required Attention™
Smaghetti, a new Super Mario Advance 4 editor, is currently in development! Check out the thread HERE!

Please chime in on a proposed restructuring of the ROM hacking sections.
Views: 88,314,193
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search 03-28-24 08:59 PM
Guest: Register | Login

Main - Posts by never-obsolete

Pages: 1 2 3 4 5

never-obsolete
Posted on 02-22-07 07:52 PM, in Proposed starting forums and other stuff Link | Quote | ID: 4654


Rat
Level: 24

Posts: 1/96
EXP: 74326
Next: 3799

Since: 02-22-07
From: Phoenix, AZ

Last post: 2567 days
Last view: 2567 days
programming section would be great

never-obsolete
Posted on 02-27-07 12:15 AM, in Programming Poll #1: Indent Style Link | Quote | ID: 8064


Rat
Level: 24

Posts: 2/96
EXP: 74326
Next: 3799

Since: 02-22-07
From: Phoenix, AZ

Last post: 2567 days
Last view: 2567 days
I use 3 space tabs for high level languages, and 20 space tabs for assembly.

never-obsolete
Posted on 02-27-07 01:57 AM, in Your current projects Link | Quote | ID: 8110


Rat
Level: 24

Posts: 3/96
EXP: 74326
Next: 3799

Since: 02-22-07
From: Phoenix, AZ

Last post: 2567 days
Last view: 2567 days
Posted by beneficii
... The hex editor will come with an on-the-fly disassembler that helps you "guess" what the still unlogged portions of the ROM are. ...



please, for the love of god, add a goto option in the menu bar.

never-obsolete
Posted on 05-26-07 02:39 AM, in The NEW General Project Screenshot / Video Thread EX Omega Supreme++ Link | Quote | ID: 38469


Rat
Level: 24

Posts: 4/96
EXP: 74326
Next: 3799

Since: 02-22-07
From: Phoenix, AZ

Last post: 2567 days
Last view: 2567 days


not a roster hack

never-obsolete
Posted on 06-12-07 04:26 PM, in Next SMB3 Hacking Project (rev. 2 of 06-12-07 04:27 PM) Link | Quote | ID: 44767


Rat
Level: 24

Posts: 5/96
EXP: 74326
Next: 3799

Since: 02-22-07
From: Phoenix, AZ

Last post: 2567 days
Last view: 2567 days
how did you handle $8001? did you hard code the corresponding mmc5 register or do you have an "interpreter" that handles all writes? i'm only asking because i'm currently converting an mmc3 game to mmc5.

never-obsolete
Posted on 07-29-07 06:33 AM, in The NEW General Project Screenshot / Video Thread EX Omega Supreme++ Link | Quote | ID: 59296


Rat
Level: 24

Posts: 6/96
EXP: 74326
Next: 3799

Since: 02-22-07
From: Phoenix, AZ

Last post: 2567 days
Last view: 2567 days
something i've been working on in my spare time. it's only a viewer at this point.

never-obsolete
Posted on 07-29-07 10:23 PM, in Question about NES ASM - JSR (20) Opcode Link | Quote | ID: 59406


Rat
Level: 24

Posts: 7/96
EXP: 74326
Next: 3799

Since: 02-22-07
From: Phoenix, AZ

Last post: 2567 days
Last view: 2567 days


Well actually, the last 4 pages in ram are always static($C000 to $FFFF)



this is mapper/setup dependent. the mmc1 can also be set up so that $8000-$BFFF is mapped to the 2nd to last 16K prg bank and $C000-$FFFF is programmer mappable, or a 3rd way provides a full 32K switch.



My question is, how do I know where the pointer is actually pointing to?



you could keep track of writes to $E000-$FFFF (where the prg register is mapped) and keep a running tab on what prg-banks are mapped where in your head.


never-obsolete
Posted on 10-15-07 10:15 PM, in How does CHR-RAM work? Link | Quote | ID: 67776


Rat
Level: 24

Posts: 8/96
EXP: 74326
Next: 3799

Since: 02-22-07
From: Phoenix, AZ

Last post: 2567 days
Last view: 2567 days
im gonna assume your talking about the NES. are you trying to convert a rom from chr-rom to chr-ram or editing an existing chr-ram game?

to write to chr-ram, you need to set the vram destination pointer (via $2006) and write your data with $2007. all of this needs to be done durring vblank or when rendering is disabled.

never-obsolete
Posted on 11-19-07 06:52 PM, in mario Adventure and Powerpak Link | Quote | ID: 70387


Rat
Level: 24

Posts: 9/96
EXP: 74326
Next: 3799

Since: 02-22-07
From: Phoenix, AZ

Last post: 2567 days
Last view: 2567 days
i thought it was because sprites were being used from PPU $0000 and $1000. having the background and sprites use the same pattern table screws up the IRQ counter.

never-obsolete
Posted on 01-02-08 02:29 AM, in Contra hacking Link | Quote | ID: 72544


Rat
Level: 24

Posts: 10/96
EXP: 74326
Next: 3799

Since: 02-22-07
From: Phoenix, AZ

Last post: 2567 days
Last view: 2567 days
i started writting an editor for it awhile ago. i never got around to figuring out completely how Base I, Waterfall, and Base II work.

the boss part of some levels also needs to be worked out. the game writes to chr-ram and also changes some tile definitions that cause the level to get muddle up.

i can give you the source if it will help you out.

never-obsolete
Posted on 01-02-08 05:05 PM, in I don't believe in giving up... Link | Quote | ID: 72575


Rat
Level: 24

Posts: 11/96
EXP: 74326
Next: 3799

Since: 02-22-07
From: Phoenix, AZ

Last post: 2567 days
Last view: 2567 days
this will write a full (uncompressed) name/attribute table to the vram destination held in X and Y. DataPtr should point to the start of the data.

DataPtr (word) needs to be on the zero-page.
PPU_ADDR = $2006
PPU_DATA = $2007

;-------------------------------SubLoadNameTable--------------------------------
; Description: Loads 1024 bytes of data into the selected name table.
;
; Arguments: X: dest addr high
; Y: dest addr low
; DataPtr, DataPtr + 1: src addr
; Return Values: (none)
;
; Routines Called: (none)
; Registers Affected: A,X,Y
; Variables Affected: (none)

SubLoadNameTable: stx PPU_ADDR
sty PPU_ADDR

lda DataPtr + 1 ; preserve DATaddrHI
pha

ldx #4 ; load name table loop
ldy #0
_sub_nametable_loop:
lda (DataPtr),y
sta PPU_DATA
iny
bne _sub_nametable_loop
;--------------------
inc DataPtr + 1
dex
bne _sub_nametable_loop

pla ; restore DATaddrHI
sta DataPtr + 1

rts
;-------------------------------------------------------------------------------

this should only be called when rendering is disabled as it will spill over vblank. eventuallly you'll probably want something more flexible, like a vram stack, but this should work for gettin sometin to the screen.

never-obsolete
Posted on 01-03-08 04:41 PM, in I don't believe in giving up... Link | Quote | ID: 72624


Rat
Level: 24

Posts: 12/96
EXP: 74326
Next: 3799

Since: 02-22-07
From: Phoenix, AZ

Last post: 2567 days
Last view: 2567 days
Chris Covell made this demo that has a full screen splash.

never-obsolete
Posted on 01-10-08 04:50 PM, in I don't believe in giving up... (rev. 2 of 01-10-08 04:51 PM) Link | Quote | ID: 73168


Rat
Level: 24

Posts: 13/96
EXP: 74326
Next: 3799

Since: 02-22-07
From: Phoenix, AZ

Last post: 2567 days
Last view: 2567 days
here's a visual that might help. the image is kinda big so i linked to it. the red grid lines on the left picturebox are the same as the black ones on the right picturebox and are not part of the scene.

edit: make sure to view the image fullsize or it'll look distorted.

never-obsolete
Posted on 02-07-08 04:51 PM, in Need help with a practice hack - SMB Rain Link | Quote | ID: 76623


Rat
Level: 24

Posts: 14/96
EXP: 74326
Next: 3799

Since: 02-22-07
From: Phoenix, AZ

Last post: 2567 days
Last view: 2567 days
this is the hook i used to add an in-game playbook editor to Tecmo Super Bowl (nes).

this first piece is where the game handles your menu choices, with my jump inserted ("jsr off_menu_p1"). there is also another similar code snippet that handles player 2.


jsr off_menu_p1
LDA $89AC, X
PHA
LDA $89AB, X
PHA
RTS



now, depending on the calling player, code will jump to "off_menu_p1" or "off_menu_p2". $E1 and $E7 hold the index of the menu choice taken, for p1 and p2 respectively. "_off_menu_normal" is code that should be executed for original menu choices.


off_menu_p1: lda #00
sta player_calling
LDA $E1
jmp _off_menu_cmpVal
; --------------------
off_menu_p2: lda #01
sta player_calling
LDA $E7
_off_menu_cmpVal: cmp #05
bcs _off_menu_pbED
; --------------------

_off_menu_normal: ASL ; return as normal for options 0 to 4
TAX
rts

_off_menu_pbED: lda #$07
sta MMC3_CTRL
lda #$07
sta MMC3_DATA

jsr Sub_InGamePBeditor

lda #07
sta MMC3_CTRL
lda #15
sta MMC3_DATA

pla ; pop off old return address
pla
lda #$8A ; (high: #$8A) ; push new address ($8A03)
pha
lda #$02 ; (low: #$03 - 1 = #$02)
pha
lda #$13 ; for compatibility
tax ; with re-entry
jmp $D8DD ; return to play select screen


writing 7s to MMC3_CTRL and MMC3_DATA swap in the code banks needed by the playbook editor. the 7 and 15 swap back the bank that was there before. all code after the two PLA is for re-entry into the game's code.

the most important thing is to return to the game's code with the NES in the same state it was before your code was executed. unless you know the game will swap in the proper banks (prg/chr) or will discard the register values.

never-obsolete
Posted on 02-15-08 09:36 AM, in Need help with a practice hack - SMB Rain (rev. 5 of 02-15-08 09:42 AM) Link | Quote | ID: 77882


Rat
Level: 24

Posts: 15/96
EXP: 74326
Next: 3799

Since: 02-22-07
From: Phoenix, AZ

Last post: 2567 days
Last view: 2567 days
keep an array of indexes to determine the page to swap in.


lda #$03
sta $8000

inc Counter
lda Counter
and #%00000011
sta Counter
tax
lda chrpages, X
sta $8001


then put this in some free space


chrpages: .db $09, $0D, $11, $15


that way your counter only loops from 0 to 3 and no adding or shifting is needed.

never-obsolete
Posted on 03-12-08 08:27 PM, in The NEW General Project Screenshot / Video Thread EX Omega Supreme++ Link | Quote | ID: 80242


Rat
Level: 24

Posts: 16/96
EXP: 74326
Next: 3799

Since: 02-22-07
From: Phoenix, AZ

Last post: 2567 days
Last view: 2567 days
these images have been scaled down from 1024x768 so they may look a little distorted.

image 1
image 2
image 3

never-obsolete
Posted on 03-17-08 09:41 PM, in The NEW General Project Screenshot / Video Thread EX Omega Supreme++ Link | Quote | ID: 80520


Rat
Level: 24

Posts: 17/96
EXP: 74326
Next: 3799

Since: 02-22-07
From: Phoenix, AZ

Last post: 2567 days
Last view: 2567 days
i was testing out my editor and redid the first town with some borrowed gfx.


never-obsolete
Posted on 04-04-08 03:24 AM, in *sigh* Need some help with this bank switching (rev. 6 of 04-04-08 03:28 AM) Link | Quote | ID: 81459


Rat
Level: 24

Posts: 18/96
EXP: 74326
Next: 3799

Since: 02-22-07
From: Phoenix, AZ

Last post: 2567 days
Last view: 2567 days
here's some code i used in tecmo super bowl, another mmc3 game. you'll need to write a six to MMC3_CTRL instead.


; this is an anchor point for calling functions outside their needed banks
; Y=funciton index
SubCallFunc_PRG01:
tya ; set function address
asl ;
tay ;
lda bankswitch_func_ptr_table, Y ;
sta $FD ;
lda bankswitch_func_ptr_table + 1, Y ;
sta $FE ;
lda #07 ; swap banks (8K @ $A000)
sta MMC3_CTRL ;
lda #02 ; (prg1-low)
sta MMC3_DATA ;
jsr _func_indirectJump ; do some shit
lda #07 ; swap back
sta MMC3_CTRL ;
lda #$11 ;
sta MMC3_DATA ;
rts ; return

_func_indirectJump: jmp ($00FD) ; software: JSR ($nnnn)

bankswitch_func_ptr_table:
.dw SubWriteNewAttTable, SubDecProBowlIndex, SubIncProBowlIndex, Sub_SwapTeams


1. yes
2. no the PC drops to the next instruction unless you change it. switching out whatever bank that the PC points to is not a good idea either.

hope that helps

never-obsolete
Posted on 04-22-08 06:58 PM, in SMB1 Lakitu palette help (rev. 2 of 04-22-08 06:58 PM) Link | Quote | ID: 82232


Rat
Level: 24

Posts: 19/96
EXP: 74326
Next: 3799

Since: 02-22-07
From: Phoenix, AZ

Last post: 2567 days
Last view: 2567 days

$EB12:A5 EF LDA $EF
$EB14:C9 11 CMP #$11
$EB16:D0 36 BNE $EB4E
$EB18:AD 09 01 LDA $0109
$EB1B:D0 21 BNE $EB3E
$EB1D:B9 12 02 LDA $0212, Y
$EB20:29 81 AND #$81
$EB22:99 12 02 STA $0212, Y
$EB25:B9 16 02 LDA $0216, Y
$EB28:09 41 ORA #$41
$EB2A:99 16 02 STA $0216, Y
$EB2D:AE 8F 07 LDX $078F
$EB30:E0 10 CPX #$10
$EB32:B0 30 BCS $EB64
$EB34:99 0E 02 STA $020E, Y
$EB37:29 81 AND #$81
$EB39:99 0A 02 STA $020A, Y
$EB3C:90 26 BCC $EB64
$EB3E:B9 02 02 LDA $0202, Y
$EB41:29 81 AND #$81
$EB43:99 02 02 STA $0202, Y
$EB46:B9 06 02 LDA $0206, Y
$EB49:09 41 ORA #$41
$EB4B:99 06 02 STA $0206, Y


the fix is in this code. to make sure you learn something, i'll leave it up to you to figure it out.

never-obsolete
Posted on 05-08-08 07:10 PM, in The NEW General Project Screenshot / Video Thread EX Omega Supreme++ Link | Quote | ID: 83116


Rat
Level: 24

Posts: 20/96
EXP: 74326
Next: 3799

Since: 02-22-07
From: Phoenix, AZ

Last post: 2567 days
Last view: 2567 days
Pages: 1 2 3 4 5


Main - Posts by never-obsolete

Acmlmboard 2.1+4δ (2023-01-15)
© 2005-2023 Acmlm, blackhole89, Xkeeper et al.

Page rendered in 0.227 seconds. (331KB of memory used)
MySQL - queries: 138, rows: 170/170, time: 0.217 seconds.