NESICIDE

Discuss emulation of the Nintendo Entertainment System and Famicom.

Moderator: Moderators

User avatar
cpow
NESICIDE developer
Posts: 1097
Joined: Mon Oct 13, 2008 7:55 pm
Location: Minneapolis, MN
Contact:

Re: NESICIDE

Post by cpow »

Eugene.S wrote:Yes, i'm using WinXP for now.
A lot of APU bugs has been fixed, thank you cpow:
Eugene.S wrote: ...
If you're saying all those in the first list are fixed that's great!
Eugene.S wrote:But Alien 3 - tune 2 (in the soundcheck mode) still have Incorrect APU behavior:
http://www.fileden.com/files/2012/4/10/ ... n3_bug.rar

Audio-channels checkboxes also has problems:
Image

Try to disable "square 1" and "square 2", for example. Then close emulator and open it again.
Emulator restarts with disabled checkboxes. But you will hear all channels enabled.
I am in a coffee shop and listened to the two Aline 3 recordings and they sound the same. I'll try again when I'm in a quieter location.

Regarding the sound disabling, yes, I am aware that is broken. I will fix it. Thanks!
User avatar
Eugene.S
Posts: 317
Joined: Sat Apr 18, 2009 4:36 am
Location: UTC+3
Contact:

Re: NESICIDE

Post by Eugene.S »

cpow wrote:If you're saying all those in the first list are fixed that's great!
Yes, all those crap are fixed.
cpow wrote:I've listened to the two Alien 3 recordings and they sound the same. I'll try again when I'm in a quieter location.
Here is this bug:
Image

On 1.022 it sounds slightly different than on older versions.
1.021 and older
1.022 and 1.023

And i've found a new APU bugs.
1) Aladdin (unl) - stage 1 (i think it has the same problem as Alien 3)
2) Bucky O'Hare - Green planet (and intro also). Squares are incorrect. DPCM is too "dirty".
3) Castlevania 2 - simon's quest, stage 1. Squares are missing sometimes. I've disabled DPCM on third loop to hear this bug more clearly.

If you want, you may add a DPCM pop-reducer like FHorse does.
Just listen the same Castlevania 2 track, for example. DPCM is much more clear.
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: NESICIDE

Post by tepples »

cpow wrote:Eugene.S: The scale works as it should here. If I recall you're on WinXP? I'll have to install an XP VM and try it.
I see the same problem on Windows 7.
User avatar
cpow
NESICIDE developer
Posts: 1097
Joined: Mon Oct 13, 2008 7:55 pm
Location: Minneapolis, MN
Contact:

Re: NESICIDE

Post by cpow »

Version 1.024 (windows build only) is out.

ChangeLog:
1. Fixed mirroring support in the Multi Discrete Mapper (mapper 28).
2. Added mapper 13 (Videomation).
3. Fixed APU period bug the right way.
User avatar
Eugene.S
Posts: 317
Joined: Sat Apr 18, 2009 4:36 am
Location: UTC+3
Contact:

Re: NESICIDE

Post by Eugene.S »

tepples wrote:I see the same problem on Windows 7.
And org also confirmed this bug on Windows 7

All APU bugs in my post are gone.
But channel-mixer, Noise and DPCM are totally broken in 1.024 (in all games)
I've don't hear Noise everywhere (or it reduced very strong).
Try to listen DPCM-bassline in "Journey to Silius" or "Gremlins 2" from Sunsoft.

And try to disable all channels in mixer. What are you hear?
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: NESICIDE

Post by tepples »

Yeah, I know you don't have phone support at 1-800-NESICIDE (or 1-800-KIRBYCIDE for that matter), but yesterday morning I tried working entirely in NESICIDE for the first time. I had previously been using generic text editors (Notepad++ on Windows or Gedit on Ubuntu), and I couldn't figure out how to do these inside NESICIDE:
  1. Add a dependency on running a program that converts data into something that gets .incbin'd into one of the .s files. In my current setup using GNU Make, I have certain .o files depending on compressed tile data, and the makefile specifies how to call a Python program to rebuild it.
  2. Add a dependency on running a program that takes the final assembled and linked .nes file and runs a transformation on it. In a test ROM for a new mapper, I have to make 15, 31, 63, or 127 copies of the first 16K bank and 1 copy of the last bank, with the byte at offset $3FF8 changed to the 16K bank number. This way I can detect powering on in the wrong bank, and I can detect which bank has been switched into a given area. Again, I wrote a Python program to do this, and my current makefile automatically calls it.
  3. Press Ctrl+F to find something without having to make the window wide enough that the find box in the toolbar is visible. Firefox and Chrome, for example, hide the find box until the user presses Ctrl+F.
  4. Preserve $0A newlines, as opposed to NESICIDE converting newlines to $0D $0A in any file that it edits.
I also seem to remember having run into a problem with the sprite address ($2004) apparently being reset to 0 during an OAM DMA ($4014) that extends through the end of the pre-render scanline, even if the DMA is performed during forced-blank ($2001=#$00). I noticed this when the sprite 0 wait in my test ROM wasn't triggering, and a bit of time with the execution inspector revealed that OAM data (including sprite 0) was being overwritten.
User avatar
cpow
NESICIDE developer
Posts: 1097
Joined: Mon Oct 13, 2008 7:55 pm
Location: Minneapolis, MN
Contact:

Re: NESICIDE

Post by cpow »

tepples wrote:
  1. Add a dependency on running a program that converts data into something that gets .incbin'd into one of the .s files. In my current setup using GNU Make, I have certain .o files depending on compressed tile data, and the makefile specifies how to call a Python program to rebuild it.
  2. Add a dependency on running a program that takes the final assembled and linked .nes file and runs a transformation on it. In a test ROM for a new mapper, I have to make 15, 31, 63, or 127 copies of the first 16K bank and 1 copy of the last bank, with the byte at offset $3FF8 changed to the 16K bank number. This way I can detect powering on in the wrong bank, and I can detect which bank has been switched into a given area. Again, I wrote a Python program to do this, and my current makefile automatically calls it.
  3. Press Ctrl+F to find something without having to make the window wide enough that the find box in the toolbar is visible. Firefox and Chrome, for example, hide the find box until the user presses Ctrl+F.
  4. Preserve $0A newlines, as opposed to NESICIDE converting newlines to $0D $0A in any file that it edits.
I haven't added support for custom makefile rules yet. I keep stumbling into platform-dependent crap. Like...on Linux the rule would just call out the name of the external python script and everything would work fine. But on Windows...well...that's where I get stuck. So...I can add the *infrastructure* for being able to add custom rules to the makefile, no big deal...but worrying about all the horrors of what happens when GNU Make can't find/execute/whatever the thing in the custom rule just made me put it off... Maybe I'll just add the infrastructure and we can work out whatever else needs to be worked out one that's in place.

RE the find box, I know about that issue but I haven't found a way to force it visible. Qt is great but sometimes seems to be lacking.
tepples wrote: I also seem to remember having run into a problem with the sprite address ($2004) apparently being reset to 0 during an OAM DMA ($4014) that extends through the end of the pre-render scanline, even if the DMA is performed during forced-blank ($2001=#$00). I noticed this when the sprite 0 wait in my test ROM wasn't triggering, and a bit of time with the execution inspector revealed that OAM data (including sprite 0) was being overwritten.
I'll check. I think you're right I just unconditionally clear $2004. I hadn't read anything that stated it only happened if rendering is enabled.

1-800-NESICIDE haha. I do have nesicide@hotmail.com. I should add that to the About box.
User avatar
cpow
NESICIDE developer
Posts: 1097
Joined: Mon Oct 13, 2008 7:55 pm
Location: Minneapolis, MN
Contact:

Re: NESICIDE

Post by cpow »

Version 1.025 (windows build only) is out.

ChangeLog:
1. Fixed implementations of mappers 9 and 10.
2. Fixed APU period bug for the last time, hopefully. [I think this is the mixer problem Eugene.S referred to. An accident in my last changes caused the periods for noise and DPCM to become 0 and stay 0.]
3. Fixed OAM address clearing bug [thanks, tepples!]
4. Moved search bar widget from toolbar to bottom of central editor window to make it more accessible in small-screen environs. Made search bar openable by Ctrl-F and closeable by a close button or by ESCape key. Made search bar highlight current content on Ctrl-F.

Up next:
1. Work on tepples' other suggestions:
a. Line-ending mode.
b. Custom makefile rule infrastructure.
2. Implement more mappers!
3. Add internal info pages for more mappers (that need them).
4. Fix scaling reversion bug.
User avatar
Hamtaro126
Posts: 818
Joined: Thu Jan 19, 2006 5:08 pm

Re: NESICIDE

Post by Hamtaro126 »

Since you support C64 as well, You might try to revamp the IDE into something more universal, Here are my suggestions:

Can you also make an option to select Plugins and Regular Programs to customize the IDE more?

Executable examples: YY-CHR, Programmer's Notepad 2, Any Program to Edit Data, etc.
Plugin examples: Video (GPU/PPU/VDP), (Co)Processors, Sound, Mappers, etc.

And Is it possible to make a better assembler with table support in?
(Needs to be GPL compatible AND compatible with normal ''Merlin'' syntax like CA65 and ASM6.)

And If you do this, Please try to change the name to something better if you can.

I really like where it's going, But these are really helpful for other developers too, Hope this isn't too bad of an Idea...
AKA SmilyMZX/AtariHacker.
User avatar
cpow
NESICIDE developer
Posts: 1097
Joined: Mon Oct 13, 2008 7:55 pm
Location: Minneapolis, MN
Contact:

Re: NESICIDE

Post by cpow »

Hamtaro126 wrote:Since you support C64 as well, You might try to revamp the IDE into something more universal, Here are my suggestions:
Have you loaded a .c64 file? If you have you'll notice that the NES elements are gone, replaced with C=64 elements. I haven't spent much effort on C=64 because it was kind of a flash-in-the-pan in the first place. Turns out the one VICE user that was interested had some kind of falling out with the VICE community and vanished...
Hamtaro126 wrote:Can you also make an option to select Plugins and Regular Programs to customize the IDE more?

Executable examples: YY-CHR, Programmer's Notepad 2, Any Program to Edit Data, etc.
Plugin examples: Video (GPU/PPU/VDP), (Co)Processors, Sound, Mappers, etc.
I'm confused...are the examples you cite plugins you'd like to plug in to NESICIDE or examples you think I should look at for how to implement plugin methodologies?
Hamtaro126 wrote:And Is it possible to make a better assembler with table support in?
(Needs to be GPL compatible AND compatible with normal ''Merlin'' syntax like CA65 and ASM6.)
If someone makes it, yes. I spent a good deal of time working on an assembler of my own but junked it when I realized that supporting the CC65 toolchain would be more mainstream.
Hamtaro126 wrote:And If you do this, Please try to change the name to something better if you can.

I really like where it's going, But these are really helpful for other developers too, Hope this isn't too bad of an Idea...
The name stays. Yes, I originally chose it because I originally wanted to provide a tool specific to developing games on the NES. But since I've added support for C=64 using VICE, and plan to add support for other iconic 8-bit targets, the name is what it is and I don't think it needs to change.
User avatar
Eugene.S
Posts: 317
Joined: Sat Apr 18, 2009 4:36 am
Location: UTC+3
Contact:

Re: NESICIDE

Post by Eugene.S »

2 cpow:
Mixer is totally broken in 1.025. Checkboxes are also broken.
You can listen only Square 1 + 1 another channel simultaneously.

see PM
User avatar
Hamtaro126
Posts: 818
Joined: Thu Jan 19, 2006 5:08 pm

Re: NESICIDE

Post by Hamtaro126 »

cpow wrote: Have you loaded a .c64 file? If you have you'll notice that the NES elements are gone, replaced with C=64 elements. I haven't spent much effort on C=64 because it was kind of a flash-in-the-pan in the first place. Turns out the one VICE user that was interested had some kind of falling out with the VICE community and vanished...
Yes, and True, but SNES support can be easy to implent this way
cpow wrote: I'm confused...are the examples you cite plugins you'd like to plug in to NESICIDE or examples you think I should look at for how to implement plugin methodologies?
Yep, Plugins, as well as other programs specific to tasks like Character editing (Again, I use YY-CHR)
cpow wrote: IIf someone makes it, yes. I spent a good deal of time working on an assembler of my own but junked it when I realized that supporting the CC65 toolchain would be more mainstream.
That's OK, then...

Thanks for your thoughts!
AKA SmilyMZX/AtariHacker.
User avatar
cpow
NESICIDE developer
Posts: 1097
Joined: Mon Oct 13, 2008 7:55 pm
Location: Minneapolis, MN
Contact:

Re: NESICIDE

Post by cpow »

Version 1.026 (windows build only) is out.

Finally figured out what Eugene.S was talking about...so this build only fixes the APU "mixer" [which is referring to the APU channel enables in the Emulator->Audio menu, not the currently-unimplemented equalizer sliders in Emulator Preferences Audio tab.

ChangeLog:
1. Fixed APU sound channel enables.

EDIT: Google upload failed so I had to re-do it.
User avatar
Eugene.S
Posts: 317
Joined: Sat Apr 18, 2009 4:36 am
Location: UTC+3
Contact:

Re: NESICIDE

Post by Eugene.S »

Thank you. It works fine now.
User avatar
cpow
NESICIDE developer
Posts: 1097
Joined: Mon Oct 13, 2008 7:55 pm
Location: Minneapolis, MN
Contact:

Re: NESICIDE

Post by cpow »

Version 1.027 (windows build only) is out.

ChangeLog:
1. Support in Environment Settings dialog (Code Editor page) for Line-ending styles. I tried it. It seems to work. Feedback, please!
2. support in Project Properties (Custom Rules page) for raw-entry of custom makefile rules. WIP...but seems to be useable. Feedback, please!

I will start updating the product version in the installer builder [when I can remember!] so hopefully that should make the installation process not require uninstallation of prior version.

Note, also, I changed the name of the installer since setup.exe is silly.

Regarding bundled installers for CC65 and GNU Make, I would do this but it makes the installer too large to put up on my google project page. I'm not ready yet to switch back to my domain to serve files from there -- google projects are just too convenient!
Post Reply