forked from Myself086/Project-Nested
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG.txt
195 lines (184 loc) · 9.42 KB
/
CHANGELOG.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
v1.8.1:
- Fixed an issue with branch solver in AOT optimization
- Removed Patreon link
v1.8:
- Fixed left column flicker
- Properly fixed echo buffer write disabled (thanks to ikari_01)
- Fixed "Reload Both ROMs"
- Fixed interrupt flag when linking indirect jump or non-native return
- Added initializer for mappers
- Selecting "< No profile >" or creating new profile no longer reset settings
- Added limited DMC support (req. static range c000 & e000 whenever possible)
- Fixed an issue with writing to $4015 via direct indexed addressing mode
- Added mapper 69
- Added self-modifying code to the emulator core based on settings during conversion
- Added showing submapper number on the exe
- Fixed bank change when emulating LDA (zp,X)
- Fixed how CRC32 is calculated
- Added new COP instructions for patching
- Added "ROL A" and "ROR A" to the interpreter
- Added mapper 1 sub-mapper SUROM
- Added setting to reserve SNES banks for enhancement ROM hacks
v1.7:
- Fixed "Header skipped file address format" from incrementing each time you press Ok
- Fixed some registers when using NMI at vblank with non-native return from interrupt (bug from v1.6)
- Fixed memory range emulation after returning from some interrupts
- Fixed pushing P register during some COP (for patching)
- Fixed memory range assumption after potential software interrupts
- Fixed memory range assumption after PRG bank switching
- Separated initial path for "Open Nes" and "Load SRM"
- Fixed AOT optimization understanding PER opcode, used for emulating JSR to RAM
- Fixed AOT optimization CLC and SEC actually changing carry flag when solving constants
- Fixed a crash when a scanline change is interrupted
- Fixed unconditional branch detection when a label points to the branch
- Added some support for pop slides (unfinished)
- Added every missing official opcodes to the interpreter (minus BRK)
- Added option to safely change bank for mapper 7
- Added proper error message when the recompiler can't allocate enough memory
- Fixed reset code from being recompiled when the exe already did it
- Added exclusive stack for the recompiler, reducing the likeliness of overflowing the game's stack
- Fixed how vblank bit is set
- Added new sprite zero detection (optional)
- Fixed various issues around loading profiles
- Added menu strip to the exe, including copy/paste profile
- Fixed stack issue when NES IRQ is enabled
v1.6:
- Added support for .pal file for custom palette
- Added support for Game Genie codes
- Added AOT inline for game code (must enable "AOT optimization")
- Fixed rare crash when linking indirect JMP destination
- Optimized non-native return with better linker, saves 5 cycles per RTS
- Optimized PRG RAM access by using 24-bit address whenever possible
- Decoupled indirect JMP and non-native RTS linked lists and double the size for the latter
- Optimized static ranges by no longer forcing a SNES bank change
- Added option to enable repurposed opcodes everywhere
- Fixed stereo for the triangle channel
- Fixed CHR RAM clone
- Added opcode BRK
- Fixed writing to $4014-$4017 with direct indexed addressing mode
- Added option to emulate bank crossing for indirect indexed addressing mode
- Added indexed indirect X access to I/O
- Added thread safety to indirect I/O access
- Added indicator for which settings were changed compared to default
- Added mention to the compatibility list on step 2
- Fixed Y scroll value when it is pointing into the attribute table
- Added conditional patch
- Fixed VramQ read from being ignored when NES NMI code is busy (VramQ should no longer require extreme buffer size)
- Reduced the default VramQ buffer size to 0x800 bytes
v1.5:
- Fixed a bug that caused the emulator to pause forever without error screen
- Fixed patching idle loops
- Fixed loading SRM file names longer than 32 characters
- Added optional Dynamic JSR, allowing each JSR to point to multiple banks
- Fixed pushing return address via PHA when code is written to SRAM
- Added button "Save & play" for faster testing on SNES emulator
- Fixed various recompiler crashes
- Fixed memory overflow during memory allocation
- Added AOT optimization
- Fixed black lines from appearing in the middle of the screen after recompiling
- Added option to move stack outside of page 01
- Removed updating and uploading unchanging unused sprites (no limit only)
- Added option to customize the NES palette
- Improved loop detection for PPUSTATUS ($2002)
- Removed some outdated settings
- Optimized non-native return address coupled with AOT compiled code
- Added custom controller input
- Fixed recompiling massive sub-routines (over 8 KB)
- Fixed CHR ROM data allocation conflicts during conversion
- Fixed changing nametable mirror to 1x1
- Added auto-play for identifying where some of the code is
v1.4.2
- Fixed loading games that have too many banks in the iNES header compared to file size
- Fixed a crash related to the reset fix of v1.4
- Fixed using patch-only opcodes in bank 0xff
v1.4.1
- Fixed some patch-only opcodes
- Fixed checksum
- Fixed using patch-only opcodes in WRAM/SRAM
- Added option to disable safe TSX
v1.4
- Fixed CHR pattern swapping for mapper 4 (again)
- Fixed indirect JMP list initial upper bound, was likely to crash games using non-native return address
- Fixed noise channel from not playing for some games
- Fixed triangle volume from going quiet sometimes
- Added more triangle samples for supporting higher frequencies
- Fixed an error when attempting to import SRM feedback to an unsaved profile
- Optimized IO emulation with the new inline script
- Fixed a memory leak when recompiling unconditional branches
- Fixed recompiling branch pointing inside another opcode's operand which was often causing games to reset
- Fixed JSR to RAM while using non-native return address
- Added auto resize to Array module
- Added direct indexed access for mapper 4 registers
- Fixed CPU reading CHR ROM when patterns are swapped by the mapper
- Fixed "Bad call" error when destination is in RAM
- Fixed SPC code address range, also prevents triangle table from being wiped shortly after power-on
- Fixed vertical scroll value being off by 1
- Added more opcodes to the interpreter (but not complete)
- Fixed ExHiROM for snes9x
- Fixed graphical issues when nametable mirror changes
- Fixed reading mappers 17-255
- Added support for 256kb SRAM, mostly used as extra WRAM
- Added mappers: 3, 7
- Fixed directly page crossing $5f to $60
- Added option to support reading CHR RAM, comes at a cost of performance when writing
- Added option to emulate RTI more accurately
- Added option to ignore waiting for interrupt to end when stack pointer is reset by the game
- Reworked SRM feedback data structure, will not be compatible with previous versions
- Raised the maximum amount of characters for profile name (128 instead of 32)
- Removed SRM feedback bottleneck
- Added option to resize SRAM
- Ignore repurposed opcodes outside of patch ranges, making native return address slightly more reliable
v1.3
- Added support for read-modify-write to IO ports
- Port $2000 is now thread safe, fixes Final Fantasy I random crashes
- Fixed AOT JMP across banks
- Fixed branch destinations to $7f0000, commonly used by AOT and once by JIT
- Fixed ExHiROM for SD2SNES
- Added option to truncate ROM size instead of a power of 2
- Fixed minor math error on the performance display
- Added indirect IO access
- Fixed a crash that sometimes happened after exiting a NES IRQ
- Fixed memory emulation assumptions after executing an idle loop
- Fixed some errors during the final stage of generating a SNES file
- Fixed stack depth assumption when disassembling
- Added load/compare absolute for idle loop detection
- Fixed mapper 1 single screen lower bank (upper bank untested)
- Fixed memory emulation for indirect JMP in range $6000-$ffff
- Removed unfinished IRQ mask emulation
- Removed old interpreted RTS
- Added options to define ROM ranges as being static
- Fixed pulse and noise halt bit
- Added opcode $42 to patch forcing native return
- Added inline capability to IO port emulation
- Fixed palette mirrors
- Added the ability to patch timed scroll changes
- Added option to support illegal NOP opcodes
- Fixed a memory leak when RTS is interpreted (non-native return address)
v1.2
- Fixed JMP to WRAM
- Added indirect JMP executed from WRAM
- Minor performance improvement when indirect load/store changes bank
- Minor performance improvement to CPU side of sound emulation
- Large performance improvement to indirect JMP
- Added page wrap support to indirect JMP
- Added option to recompile code in PRG RAM
- Fixed indirect JMP into interpreted RAM
- Added some options to disable stack optimizations
- Fixed loading/saving unknown settings in a profile
v1.1
- Fixed sprite pattern table swap made by mappers when sprites are 8x16 in size.
- Fixed sprite transfer from pages $08-$1f and $60-$ff
- VramQ is now optionally resizable
- Fixed CHR pattern swapping for mapper 4
- Added nametable mirror select for mapper 4
- Partly fixed nametable mirror select for mapper 1
- Fixed STX/STY to $2000 and $4014
- Sprite size and pattern table are now decided at the beginning of each frame rather than during transfer
- Fixed RTS used as indirect jump
- Fixed pushing constant return address with PHA
- Fixed indirect JMP reading from pages $08-$1f and $60-$ff
- Added blue screen of death
- Fixed black screen on repro carts (thanks to soniccd123)
- Fixed compatibility with Mesen-S
- Added ; as a line separator when editing patches
- Added a reset code to the SPC, necessary for combo randomizers (write $F5 to port $2140)