Banner
The Overworld Design Contest ends in
3 DAYS, 10 HOURS, 8 MINUTES AND 47 SECONDS
Views: 906,135,863
Time:
10 users online: Bench-kun, Daizo Dee Von, Green Jerry, Infinity, JonnyManjiro,  KevinM, NerDose, Paithus,  patcdr, WhiteYoshiEgg - Guests: 61 - Bots: 83 Users: 50,789 (2,074 active)
Latest: coffe789
Tip: After editing your overworld, make sure to use an EMPTY save file, as save files with progress may load Mario's position based on previous versions of the overworld. Note that altered level flags will also only take effect on new save files.
Not logged in.
Posts by PastaNoSauce
PastaNoSauce's Profile - Posts by PastaNoSauce
Pages: « 1 »
Is the retry patch from Mostly Harmless available?

The transparent retry-only prompt is the best I've ever seen. Should be the gold standard for those who want a retry prompt.
Originally posted by quietmason
Originally posted by PastaNoSauce
Is the retry patch from Mostly Harmless available?

The transparent retry-only prompt is the best I've ever seen. Should be the gold standard for those who want a retry prompt.


It’s on dtothefourth’s patreon!


Thank you!

More info for the interested:
https://twitter.com/dtothefourth/status/1336468811210498054
With perhaps ASM or a contraption?

I'd like to make a hack with one level that does one thing: changes the color of the screen (to something bright like red, green, yellow) when a face button is pressed, and reverts the color to blank (black would be suitable) when the button is released.

It would serve as a utility hack for easily measuring and adjusting input lag with a high speed camera.

Fancier options such as flashing the colors red for A, yellow for B, etc would be nice but not required.

I'd like to use the hack for a guide on how to precisely adjust input lag for emulators, as I'm tired of the myth that it cannot be matched to console. Such a utility hack would make it a bit easier for everyone.

Thanks!
Edited the title with a clear description.
Originally posted by WhiteYoshiEgg
This might do the trick (to be inserted with uberASMTool):


I'm no expert on hardware and video signals and input lag so I have no idea if this will actually help you achieve your goal or not, but it does produce the effect you want.


I made a tiny utility hack with this ASM to aid in measuring input lag: Measure Input Lag.bps The sprites on screen are just to ensure there's a typical processing load on the emulator.

I'd hope to have a detailed post with how to use it properly, with an included readme.

Thank you so much. The only inconsequential note about the ASM is the way the buttons are read; e.g. A or B, X or Y, without differentiation. I understand the 16 data clock cycles used to ID button presses, so I suppose it's a bit more complicated to handle 2 bytes of data at a time? No idea but I wish I knew. The ASM works as intended for its use though, just got me curious.
Originally posted by WhiteYoshiEgg
I'm using SMW's own RAM addresses to detect button presses (see $15 through $18 in the RAM Map), which are a step away from the way the hardware does it, and which apparently don't distinguish between X/Y and A/B that much. That's about all I know. /shrug


Ok I see the issue, but I don't know how to write it in ASM.

For a B press,

$7E0015 = 10000000 AND $7E0017 = 00000000

For a Y press,

$7E0015 = 01000000 AND $7E0017 = 00000000

Is there a simple way to express this?

Thanks again! This is my first time diving into this and using these tools - but I want to give back to the community in some way.
Originally posted by WhiteYoshiEgg
That's actually true! I fixed that really quick by adding a "bits you don't want to be set in $17" column to the table. It's pretty dirty but seems to work.


Great! However when applied the background is green without a button press, and flashes to black on a button press.

I added the code from main in the first ASM code, so the patch looks like this:

Code
main:

	REP #$20
	STZ $0701
	SEP #$20

	PHB : PHK : PLB
	LDX.b #.table_end-.table-4
.loop
	LDA .table,x
	STA $00
	STZ $01
	LDA ($00)
	AND .table+1,x
	BEQ .continue
	LDA $17
	AND .table+2,x
	BNE .continue
	REP #$20
	LDA .table+3,x
	STA $0701
	SEP #$20
	BRA .break
.continue
	DEX #5
	BPL .loop
.break
	PLB
	RTL

.table
	db $15,%00001000,%00000000 : dw $001F	; UP: red
	db $15,%00000100,%00000000 : dw $7F80	; DOWN: blue
	db $15,%00000010,%00000000 : dw $03E0	; LEFT: green
	db $15,%00000001,%00000000 : dw $03FF	; RIGHT: yellow
	db $17,%10000000,%00000000 : dw $021F	; A: orange
	db $15,%10000000,%10000000 : dw $4010	; B: purple
	db $17,%01000000,%00000000 : dw $621F	; X: pink
	db $15,%01000000,%01000000 : dw $7FE0	; Y: cyan
	db $15,%00100000,%00000000 : dw $0177	; SELECT: brown
	db $15,%00010000,%00000000 : dw $7FFF	; START: white
..end


Can you spot what's happened?
Originally posted by WhiteYoshiEgg
Ah right, looks like I didn't copy the start of the code by accident which also had a small change. Here's the entire thing.


Nice!

If you see an obvious way to set the background color when no button is pressed (it's always black), that would a 'so low priority it can be ignored' addition. I attempted to add a table value with all 0's (no buttons pressed) and the desired color, which of course didn't work - which really just comes back to me being grateful for your code capabilities here. #smw{:TUP:}
Originally posted by Tahixham
In an effort to ensure SMW Central is, and remains, as LGBTQ+ friendly and all-inclusive as it should be, we're pushing forward with a zero tolerance policy and approach against expressions of homophobia, transphobia, sexism, racism, etc.



I'd just like to comment how I appreciate the work that goes into making SMW Central a healthy community - I wouldn't have been interested in picking up a controller (since I was a kid) otherwise. Thanks!
First, while this write-up is my opinion, and comes from my own experience, I've shared it here as a small way to give back to a community that has offered so much. I'll try to update this post as needed.

This guide applies to RetroArch with the snes9x core (for Lunar Magic creators: running emulation in Lunar Magic won't have the same benefits, but switching to RetroArch to playtest longer sections might be useful with these improvements). Typically referred to as input lag – apparent lag in emulation is a sum of a few factors that I'll be concisely describing here.

Motion Blur

I'm addressing this first, because it has made the most impact for removing lag in my own setup. We perceive this affect due to a combination of refresh rates, pixel transitions, and fast on-screen movement. A monitor's own input lag and refresh rate can make this worse (60hz on a 60 fps game means there are always pixels transition-blurring from one frame to the next). Mario for example can appear to be in multiple parts of the screen, blurred.

CRTs do a great job of eliminating this, and while CRT emulation is around the corner, there are options to greatly reduce motion blur available now.

A 240hz+ monitor with its own 'BFI technology' (varies by manufacturer, examples: ULMB, LightBoost, DyAc, ELMB) combined with RetroArch's own Black Frame Insertion option creates an incredibly clear display, close to CRT, for 60FPS retro games like SMW. BFI doesn't create screen flickering that many people are sensitive to, but it does have its own low frequency pulsing. While I consider myself screen-flicker sensitive, I personally don't have issues with BFI during long emulation sessions, although I also disable the monitor's BFI when I'm not using the emulator – as is recommended.

These monitors of course have input lag, and we will adjust for that with RetroArch. Check online or at rtings.com for the input lag in milliseconds measured for your monitor with BFI enabled. We'll use that number later for the final input lag adjustment.

Setup:
A 240hz+ monitor outputting at 240hz with its BFI setting enabled.
Caveat:
Older processor's onboard graphics (~pre-2013) may not have a recent enough implementation of HDMI or DisplayPort in order to output to a display at the minimum of 1080p at 240hz.
Many processor's onboard graphics (~pre-2017) may not have a recent enough implementation of HDMI in order to output to a display at the minimum of 1080p at 240hz, but will support this minimum resolution through a DisplayPort signal.


In RetroArch v1.9.1:
Settings > Video > Output > Screen Resolution > Ensure a 240hz resolution is used.
Settings > Video > Output > You may have to select “Set Display-Reported Refresh Rate”, and this will update the Vertical Refresh Rate to what should be 239.x hz (not 240hz, 240 is a nominal term).
Settings > Video > Synchronization > Vertical Sync > On
Settings > Video > Synchronization > Vsync Swap Interval > 2
Settings > Video > Synchronization > Hard GPU Sync > On
Settings > Video > Synchronization > Hard GPU Sync Frames > 0
Settings > Video > Black Frame Insertion > 1

(for Windows 10) Settings > Audio > Output > Audio (driver) > xaudio
The wasapi driver option currently has issues when using fast-forward and rewind in RetroArch. And, on my system at least, is not compatible with the Frame Delay setting we'll be needing at the end of this write-up.

(after selection of audio driver is made) Settings > Audio > Output > Audio Latency > as low as 24, raise if the audio is crackling. On my setup with the xaudio driver, that's 50.

Tada, an incredibly low blur picture, even with fast movement in SMW such as cannon-speed levels.

Input

Now for controllers. I personally recommend an original SNES controller with raphnet's SNES to USB adapter. Raphnet has open source software on their website for controlling the adapter and adjusting its poll interval – which directly affects input lag. I set this to 2ms (equivalent to 500hz polling rate).

While there might be a setup for certain Bluetooth controllers to interface to a PC with low latency, I don't have any documentation available for that. If you own a modern USB controller and prefer to use it – e.g, Xbox, Playstation, 8BitDo – then you have to ensure it supports at least a 500hz polling rate. Tools like UsbTreeView may assist you with verifying that, but I have no documentation.

A short word on the Buffalo USB controller. I discourage purchasing this new; its build quality is incredibly poor. Viewing a disassembly video online, the rubber membranes used are not only proprietary (not replaceable with SNES pads) but also they are not secured to the controller in any way – they are free to move around with use. A big nope. Maybe a knockoff USB SNES controller for an RPG, but certainly not the Buffalo at the price it's sold for.

Back to the polling rate, this is an effect of USB. USB in itself introduces 1 ms of latency, on top of the polling rate which adds a variable latency. I suppose you could have near-zero latency with a SNES controller to parallel port adapter – skipping USB entirely - but I haven't tried! The variable latency of a 500hz USB polling rate is between 0ms and 2 ms, averaging to 1ms – making the total USB latency average to 2ms – not bad.

Your System


PC processors from the last decade should have no trouble accurately emulating the SNES. That's all.

Adjusting for the Known Input Lag in RetroArch

Now we take the two values from earlier: the total average USB latency (2ms) and add the monitor's input lag with BFI enabled (we'll use 4ms as an example). 6ms is the total in this example.

Settings > Latency > Frame Delay > in this example 6

Congrats. Enjoy your lag free setup, with SMW having just its original 2 lag frames - as Shigeru Miyamoto intended.



Special thanks to WhiteYoshiEgg (and  MarioFanGamer) for their ASM when I was doing emulation testing to prepare for this write-up, I wouldn't have gotten the ball rolling without the help!
My list of the most influential hacks for players who are improving their skillset to intermediate and beyond. Or just creators who are seeking to find ideas. This is a short list, and my opinion, but they stand out as a resource for improving skill and defining creativity. How did these hacks influence you?

Claustrophobia
The absolute hack for teaching d-pad control. Unfortunately I believe the creator expressed harmful beliefs and discrimination, but the hack is still available. The levels are relatively short (one-screen), so you can play it alongside anything else. 96 exits. I took my time to clear it, but the result was techniques learned that I use in all kaizo to this day.

Bunbun World 2, Peachy Moat World, and Dancer to a Discordant System
The current gold standard for platformers with a very fair difficulty.

Romhack Races
The Saturday blind races are an excellent way to learn fresh setups, and just generally improve. I highly recommend playing through them.


Ultraviolet

An all-time favorite of mine. Incredibly inventive and very well themed. Only 11 exits.


Super Cool World

A top hack of its era and difficulty. Perhaps a touch more challenging than Akagore or Quickie World, but I don't hear it mentioned for how exceptional Super Cool World is compared to the rest.


Super Ryu World 2

Another very inventive hack for its time, both in chocolate, aesthetics, and setups. Also a creator who expressed harmful beliefs and discrimination, but again the hack is still on SMWC. The star world level is very input heavy, so don't feel like you have to beat it right away.



Three intermediate+ hacks for pushing the bar:

Riff World 2
The next big step up from Invictus (without being a Grand Poo World grind). I simply applied the retry patch myself, after grabbing the first level's midway. Anybody complaining about it took more time to write out their opinion than I did to use Asar in the command line.


Super Swunsh World 2

It's long and challenging, but one of the newest and most fresh chocolate hacks - if you're into that.


Titan Mario

A Grand Poo World-like challenge from the creator of Comfort Zone, but with only 12 exits you won't have to set aside 70+ hours/years. Very satisfying to clear.

GLHF!
Edited to add Dancer to a Discordant System, and edit the title so it's clear this is a list I've put together and not a thread about my hacks :)
Pages: « 1 »
PastaNoSauce's Profile - Posts by PastaNoSauce

The purpose of this site is not to distribute copyrighted material, but to honor one of our favourite games.

Copyright © 2005 - 2021 - SMW Central
Legal Information - Privacy Policy - Link To Us


Menu

Follow Us On

  • YouTube
  • Twitch
  • Twitter

Affiliates

  • Super Mario Bros. X Community
  • ROMhacking.net
  • Mario Fan Games Galaxy
  • sm64romhacks