2015-08-21 11:29:53 +00:00
|
|
|
ScanDialog::ScanDialog() {
|
|
|
|
scanDialog = this;
|
|
|
|
|
|
|
|
onClose(&Application::quit);
|
|
|
|
layout.setMargin(5);
|
|
|
|
pathEdit.onActivate([&] { refresh(); });
|
2016-01-07 08:14:33 +00:00
|
|
|
refreshButton.setIcon(Icon::Action::Refresh).setBordered(false).onActivate([&] {
|
2015-11-19 09:27:56 +00:00
|
|
|
pathEdit.setText(settings["icarus/Path"].text());
|
2015-08-21 11:29:53 +00:00
|
|
|
refresh();
|
|
|
|
});
|
2016-01-07 08:14:33 +00:00
|
|
|
homeButton.setIcon(Icon::Go::Home).setBordered(false).onActivate([&] {
|
2016-05-16 09:51:12 +00:00
|
|
|
pathEdit.setText(Path::user());
|
2015-08-21 11:29:53 +00:00
|
|
|
refresh();
|
|
|
|
});
|
2016-01-07 08:14:33 +00:00
|
|
|
upButton.setIcon(Icon::Go::Up).setBordered(false).onActivate([&] {
|
Update to v099r16 release (public beta).
byuu says:
Changelog:
- hiro: BrowserDialog can navigate up to drive selection on Windows
- nall: (file,path,dir,base,prefix,suffix)name =>
Location::(file,path,dir,base,prefix,suffix)
- higan/tomoko: rename audio filter label from "Sinc" to "IIR - Biquad"
- higan/tomoko: allow loading files via icarus on the command-line
once again
- higan/tomoko: (begrudging) quick hack to fix presentation window focus
on startup
- higan/audio: don't divide output audio volume by number of streams
- processor/r65816: fix a regression in (read,write)DB; fixes Taz-Mania
- fixed compilation regressions on Windows and Linux
I'm happy with where we are at with code cleanups and stability, so I'd
like to release v100. But even though I'm not assigning any special
significance to this version, we should probably test it more thoroughly
first.
2016-07-04 11:53:24 +00:00
|
|
|
pathEdit.setText(Location::dir(settings["icarus/Path"].text()));
|
2015-08-21 11:29:53 +00:00
|
|
|
refresh();
|
|
|
|
});
|
|
|
|
scanList.onActivate([&] { activate(); });
|
|
|
|
selectAllButton.setText("Select All").onActivate([&] {
|
2015-10-03 06:25:39 +00:00
|
|
|
for(auto& item : scanList.items()) {
|
2016-05-04 10:07:13 +00:00
|
|
|
if(item.checkable()) item.setChecked(true);
|
2015-10-03 06:25:39 +00:00
|
|
|
}
|
2015-08-21 11:29:53 +00:00
|
|
|
});
|
|
|
|
unselectAllButton.setText("Unselect All").onActivate([&] {
|
2015-10-03 06:25:39 +00:00
|
|
|
for(auto& item : scanList.items()) {
|
2016-05-04 10:07:13 +00:00
|
|
|
if(item.checkable()) item.setChecked(false);
|
2015-10-03 06:25:39 +00:00
|
|
|
}
|
2015-08-21 11:29:53 +00:00
|
|
|
});
|
2015-11-19 09:27:56 +00:00
|
|
|
settingsButton.setText("Settings ...").onActivate([&] {
|
|
|
|
settingsDialog->setCentered(*this);
|
|
|
|
settingsDialog->setVisible();
|
|
|
|
settingsDialog->setFocused();
|
2015-08-21 11:29:53 +00:00
|
|
|
});
|
|
|
|
importButton.setText("Import ...").onActivate([&] { import(); });
|
|
|
|
|
|
|
|
setTitle("icarus");
|
|
|
|
setSize({800, 480});
|
|
|
|
setCentered();
|
|
|
|
}
|
|
|
|
|
|
|
|
auto ScanDialog::show() -> void {
|
|
|
|
setVisible();
|
2015-11-19 09:27:56 +00:00
|
|
|
pathEdit.setText(settings["icarus/Path"].text());
|
2015-08-21 11:29:53 +00:00
|
|
|
refresh();
|
|
|
|
}
|
|
|
|
|
|
|
|
auto ScanDialog::refresh() -> void {
|
|
|
|
scanList.reset();
|
|
|
|
|
Update to v100 release.
byuu says:
higan has finally reached v100!
I feel it's important to stress right away that this is not "version
1.00", nor is it a major milestone release. Rather than arbitrary version
numbers, all of my software simply bumps version numbers by one for each
official release. As such, higan v100 is simply higan's 100th release.
That said, the primary focus of this release has been code
clean-ups. These are always somewhat dangerous in that regressions are
possible. We've tested through sixteen WIP revisions, one of which was
open to the public, to try and minimize any regressions. But all the same,
please report any regressions if you discover any.
Changelog (since v099):
FC: render during pixels 1-256 instead of 0-255 [hex_usr]
FC: rewrote controller emulation code
SFC: 8% speedup over the previous release thanks to PPU optimizations
SFC: fixed nasty DB address wrapping regression from v099
SFC: USART developer controller removed; superseded by 21fx
SFC: Super Multitap option removed from controller port 1; ports
renamed 2-5
SFC: hidden option to experiment with 128KB VRAM (strictly for novelty)
higan: audio volume no longer divided by number of audio streams
higan: updated controller polling code to fix possible future mapping
issues
higan: replaced nall/stream with nall/vfs for file-loading subsystem
tomoko: can now load multi-slotted games via command-line
tomoko: synchronize video removed from UI; still available in the
settings file
tomoko, icarus: can navigate to root drive selection on Windows
all: major code cleanups and refactoring (~1MB diff against v099)
Note 1: the audio volume change means that SGB and MSU1 games won't
lose half the volume on the SNES sounds anymore. However, if one goes
overboard and drives the sound all the way to max volume with the MSU1,
clamping may occur. The obvious solution is not to drive volume that high
(it will vastly overpower the SNES audio, which usually never exceeds
25% volume.) Another option is to lower the volume in the audio settings
panel to 50%. In general, neither is likely to ever be necessary.
Note 2: the synchronize video option was hidden from the UI because it
is no longer useful. With the advent of compositors, the loss of the
complicated timing settings panel, support for the WonderSwan and its
75hz display, the need to emulate variable refresh rate behaviors in the
Game Boy, the unfortunate latency spike and audio distortion caused by
long Vsync pauses, and the arrival of adaptive sync technology ... it
no longer makes sense to present this option. However, as stated, you
can edit settings.bml to enable this option anyway if you insist and
understand the aforementioned risks.
Changelog (since v099r16 open beta):
- fixed MSU1 audio sign extension
- fixed compilation with SGB support disabled
- icarus can now navigate to root directory
- fixed compilation issues with OS X port
- (hopefully) fixed label height issue with hiro that affected icarus
import dialog
- (mostly) fixed BS Memory, Sufami Turbo slot loading
Errata:
- forgot to remove the " - Slot A", " - Slot B" suffixes for Sufami
Turbo slot loading
- this means you have to navigate up one folder and then into Sufami
Turbo/ to load games for this system
- moving WonderSwan orientation controls to the device slot is causing
some nastiness
- can now select orientation from the main menu, but it doesn't rotate
the display
2016-07-08 12:04:32 +00:00
|
|
|
auto pathname = pathEdit.text().transform("\\", "/");
|
|
|
|
if((pathname || Path::root() == "/") && !pathname.endsWith("/")) pathname.append("/");
|
2015-08-21 11:29:53 +00:00
|
|
|
|
2015-11-19 09:27:56 +00:00
|
|
|
settings["icarus/Path"].setValue(pathname);
|
|
|
|
pathEdit.setText(pathname);
|
2015-08-21 11:29:53 +00:00
|
|
|
auto contents = directory::icontents(pathname);
|
|
|
|
|
|
|
|
for(auto& name : contents) {
|
|
|
|
if(!name.endsWith("/")) continue;
|
Update to v099r16 release (public beta).
byuu says:
Changelog:
- hiro: BrowserDialog can navigate up to drive selection on Windows
- nall: (file,path,dir,base,prefix,suffix)name =>
Location::(file,path,dir,base,prefix,suffix)
- higan/tomoko: rename audio filter label from "Sinc" to "IIR - Biquad"
- higan/tomoko: allow loading files via icarus on the command-line
once again
- higan/tomoko: (begrudging) quick hack to fix presentation window focus
on startup
- higan/audio: don't divide output audio volume by number of streams
- processor/r65816: fix a regression in (read,write)DB; fixes Taz-Mania
- fixed compilation regressions on Windows and Linux
I'm happy with where we are at with code cleanups and stability, so I'd
like to release v100. But even though I'm not assigning any special
significance to this version, we should probably test it more thoroughly
first.
2016-07-04 11:53:24 +00:00
|
|
|
if(gamePakType(Location::suffix(name))) continue;
|
2016-05-16 09:51:12 +00:00
|
|
|
scanList.append(ListViewItem().setIcon(Icon::Emblem::Folder).setText(name.trimRight("/")));
|
2015-08-21 11:29:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
for(auto& name : contents) {
|
|
|
|
if(name.endsWith("/")) continue;
|
Update to v099r16 release (public beta).
byuu says:
Changelog:
- hiro: BrowserDialog can navigate up to drive selection on Windows
- nall: (file,path,dir,base,prefix,suffix)name =>
Location::(file,path,dir,base,prefix,suffix)
- higan/tomoko: rename audio filter label from "Sinc" to "IIR - Biquad"
- higan/tomoko: allow loading files via icarus on the command-line
once again
- higan/tomoko: (begrudging) quick hack to fix presentation window focus
on startup
- higan/audio: don't divide output audio volume by number of streams
- processor/r65816: fix a regression in (read,write)DB; fixes Taz-Mania
- fixed compilation regressions on Windows and Linux
I'm happy with where we are at with code cleanups and stability, so I'd
like to release v100. But even though I'm not assigning any special
significance to this version, we should probably test it more thoroughly
first.
2016-07-04 11:53:24 +00:00
|
|
|
if(!gameRomType(Location::suffix(name).downcase())) continue;
|
2016-05-04 10:07:13 +00:00
|
|
|
scanList.append(ListViewItem().setCheckable().setIcon(Icon::Emblem::File).setText(name));
|
2015-08-21 11:29:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
Application::processEvents();
|
|
|
|
scanList.setFocused();
|
|
|
|
}
|
|
|
|
|
|
|
|
auto ScanDialog::activate() -> void {
|
|
|
|
if(auto item = scanList.selected()) {
|
2016-05-04 10:07:13 +00:00
|
|
|
string location{settings["icarus/Path"].text(), item.text()};
|
Update to v100 release.
byuu says:
higan has finally reached v100!
I feel it's important to stress right away that this is not "version
1.00", nor is it a major milestone release. Rather than arbitrary version
numbers, all of my software simply bumps version numbers by one for each
official release. As such, higan v100 is simply higan's 100th release.
That said, the primary focus of this release has been code
clean-ups. These are always somewhat dangerous in that regressions are
possible. We've tested through sixteen WIP revisions, one of which was
open to the public, to try and minimize any regressions. But all the same,
please report any regressions if you discover any.
Changelog (since v099):
FC: render during pixels 1-256 instead of 0-255 [hex_usr]
FC: rewrote controller emulation code
SFC: 8% speedup over the previous release thanks to PPU optimizations
SFC: fixed nasty DB address wrapping regression from v099
SFC: USART developer controller removed; superseded by 21fx
SFC: Super Multitap option removed from controller port 1; ports
renamed 2-5
SFC: hidden option to experiment with 128KB VRAM (strictly for novelty)
higan: audio volume no longer divided by number of audio streams
higan: updated controller polling code to fix possible future mapping
issues
higan: replaced nall/stream with nall/vfs for file-loading subsystem
tomoko: can now load multi-slotted games via command-line
tomoko: synchronize video removed from UI; still available in the
settings file
tomoko, icarus: can navigate to root drive selection on Windows
all: major code cleanups and refactoring (~1MB diff against v099)
Note 1: the audio volume change means that SGB and MSU1 games won't
lose half the volume on the SNES sounds anymore. However, if one goes
overboard and drives the sound all the way to max volume with the MSU1,
clamping may occur. The obvious solution is not to drive volume that high
(it will vastly overpower the SNES audio, which usually never exceeds
25% volume.) Another option is to lower the volume in the audio settings
panel to 50%. In general, neither is likely to ever be necessary.
Note 2: the synchronize video option was hidden from the UI because it
is no longer useful. With the advent of compositors, the loss of the
complicated timing settings panel, support for the WonderSwan and its
75hz display, the need to emulate variable refresh rate behaviors in the
Game Boy, the unfortunate latency spike and audio distortion caused by
long Vsync pauses, and the arrival of adaptive sync technology ... it
no longer makes sense to present this option. However, as stated, you
can edit settings.bml to enable this option anyway if you insist and
understand the aforementioned risks.
Changelog (since v099r16 open beta):
- fixed MSU1 audio sign extension
- fixed compilation with SGB support disabled
- icarus can now navigate to root directory
- fixed compilation issues with OS X port
- (hopefully) fixed label height issue with hiro that affected icarus
import dialog
- (mostly) fixed BS Memory, Sufami Turbo slot loading
Errata:
- forgot to remove the " - Slot A", " - Slot B" suffixes for Sufami
Turbo slot loading
- this means you have to navigate up one folder and then into Sufami
Turbo/ to load games for this system
- moving WonderSwan orientation controls to the device slot is causing
some nastiness
- can now select orientation from the main menu, but it doesn't rotate
the display
2016-07-08 12:04:32 +00:00
|
|
|
if(!gamePakType(Location::suffix(location))) {
|
2015-08-21 11:29:53 +00:00
|
|
|
pathEdit.setText(location);
|
|
|
|
refresh();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
auto ScanDialog::import() -> void {
|
2016-07-01 11:58:12 +00:00
|
|
|
string_vector filenames;
|
2015-08-21 11:29:53 +00:00
|
|
|
for(auto& item : scanList.items()) {
|
2016-05-04 10:07:13 +00:00
|
|
|
if(item.checked()) {
|
|
|
|
filenames.append(string{settings["icarus/Path"].text(), item.text()});
|
2015-08-21 11:29:53 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if(!filenames) {
|
|
|
|
MessageDialog().setParent(*this).setText("Nothing selected to import.").error();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
setVisible(false);
|
|
|
|
importDialog->run(filenames);
|
|
|
|
}
|
|
|
|
|
|
|
|
auto ScanDialog::gamePakType(const string& type) -> bool {
|
|
|
|
return type == ".sys"
|
|
|
|
|| type == ".fc"
|
|
|
|
|| type == ".sfc"
|
Update to v101r30 release.
byuu says:
Changelog:
- SMS: added cartridge ROM/RAM mirroring (fixes Alex Kidd)
- SMS: fixed 8x16 sprite mode (fixes Wonder Boy, Ys graphics)
- Z80: emulated "ex (sp),hl" instruction
- Z80: fixed INx NF (should be set instead of cleared)
- Z80: fixed loop condition check for CPxR, INxR, LDxR, OTxR (fixes
walking in Wonder Boy)
- SFC: removed Debugger and sfc/debugger.hpp
- icarus: connected MS, GG, MD importing to the scan dialog
- PCE: added emulation skeleton to higan and icarus
At this point, Master System games are fairly highly compatible, sans
audio. Game Gear games are running, but I need to crop the resolution
and support the higher color palette that they can utilize. It's really
something else the way they handled the resolution shrink on that thing.
The last change is obviously going to be the biggest news.
I'm very well aware it's not an ideal time to start on a new emulation
core, with the MS and MD cores only just now coming to life with no
audio support.
But, for whatever reason, my heart's really set on working on the PC
Engine. I wanted to write the final higan skeleton core, and get things
ready so that whenever I'm in the mood to work on the PCE, I can do so.
The skeleton is far and away the most tedious and obnoxious part of the
emulator development, because it's basically all just lots of
boilerplate templated code, lots of new files to create, etc.
I really don't know how things are going to proceed ... but I can say
with 99.9% certainty that this will be the final brand new core ever
added to higan -- at least one written by me, that is. This was
basically the last system from my childhood that I ever cared about.
It's the last 2D system with games that I really enjoy playing. No other
system is worth dividing my efforts and reducing the quality and amount
of time to work on the systems I have.
In the future, there will be potential for FDS, Mega CD and PCE-CD
support. But those will all be add-ons, and they'll all be really
difficult and challenge the entire design of higan's UI (it's entirely
cartridge-driven at this time.) None of them will be entirely new cores
like this one.
2017-01-11 20:27:30 +00:00
|
|
|
|| type == ".ms"
|
|
|
|
|| type == ".md"
|
|
|
|
|| type == ".pce"
|
2015-08-21 11:29:53 +00:00
|
|
|
|| type == ".gb"
|
|
|
|
|| type == ".gbc"
|
|
|
|
|| type == ".gba"
|
Update to v101r30 release.
byuu says:
Changelog:
- SMS: added cartridge ROM/RAM mirroring (fixes Alex Kidd)
- SMS: fixed 8x16 sprite mode (fixes Wonder Boy, Ys graphics)
- Z80: emulated "ex (sp),hl" instruction
- Z80: fixed INx NF (should be set instead of cleared)
- Z80: fixed loop condition check for CPxR, INxR, LDxR, OTxR (fixes
walking in Wonder Boy)
- SFC: removed Debugger and sfc/debugger.hpp
- icarus: connected MS, GG, MD importing to the scan dialog
- PCE: added emulation skeleton to higan and icarus
At this point, Master System games are fairly highly compatible, sans
audio. Game Gear games are running, but I need to crop the resolution
and support the higher color palette that they can utilize. It's really
something else the way they handled the resolution shrink on that thing.
The last change is obviously going to be the biggest news.
I'm very well aware it's not an ideal time to start on a new emulation
core, with the MS and MD cores only just now coming to life with no
audio support.
But, for whatever reason, my heart's really set on working on the PC
Engine. I wanted to write the final higan skeleton core, and get things
ready so that whenever I'm in the mood to work on the PCE, I can do so.
The skeleton is far and away the most tedious and obnoxious part of the
emulator development, because it's basically all just lots of
boilerplate templated code, lots of new files to create, etc.
I really don't know how things are going to proceed ... but I can say
with 99.9% certainty that this will be the final brand new core ever
added to higan -- at least one written by me, that is. This was
basically the last system from my childhood that I ever cared about.
It's the last 2D system with games that I really enjoy playing. No other
system is worth dividing my efforts and reducing the quality and amount
of time to work on the systems I have.
In the future, there will be potential for FDS, Mega CD and PCE-CD
support. But those will all be add-ons, and they'll all be really
difficult and challenge the entire design of higan's UI (it's entirely
cartridge-driven at this time.) None of them will be entirely new cores
like this one.
2017-01-11 20:27:30 +00:00
|
|
|
|| type == ".gg"
|
2015-08-21 11:29:53 +00:00
|
|
|
|| type == ".bs"
|
|
|
|
|| type == ".st";
|
|
|
|
}
|
|
|
|
|
|
|
|
auto ScanDialog::gameRomType(const string& type) -> bool {
|
|
|
|
return type == ".zip"
|
|
|
|
|| type == ".fc" || type == ".nes"
|
|
|
|
|| type == ".sfc" || type == ".smc"
|
Update to v101r30 release.
byuu says:
Changelog:
- SMS: added cartridge ROM/RAM mirroring (fixes Alex Kidd)
- SMS: fixed 8x16 sprite mode (fixes Wonder Boy, Ys graphics)
- Z80: emulated "ex (sp),hl" instruction
- Z80: fixed INx NF (should be set instead of cleared)
- Z80: fixed loop condition check for CPxR, INxR, LDxR, OTxR (fixes
walking in Wonder Boy)
- SFC: removed Debugger and sfc/debugger.hpp
- icarus: connected MS, GG, MD importing to the scan dialog
- PCE: added emulation skeleton to higan and icarus
At this point, Master System games are fairly highly compatible, sans
audio. Game Gear games are running, but I need to crop the resolution
and support the higher color palette that they can utilize. It's really
something else the way they handled the resolution shrink on that thing.
The last change is obviously going to be the biggest news.
I'm very well aware it's not an ideal time to start on a new emulation
core, with the MS and MD cores only just now coming to life with no
audio support.
But, for whatever reason, my heart's really set on working on the PC
Engine. I wanted to write the final higan skeleton core, and get things
ready so that whenever I'm in the mood to work on the PCE, I can do so.
The skeleton is far and away the most tedious and obnoxious part of the
emulator development, because it's basically all just lots of
boilerplate templated code, lots of new files to create, etc.
I really don't know how things are going to proceed ... but I can say
with 99.9% certainty that this will be the final brand new core ever
added to higan -- at least one written by me, that is. This was
basically the last system from my childhood that I ever cared about.
It's the last 2D system with games that I really enjoy playing. No other
system is worth dividing my efforts and reducing the quality and amount
of time to work on the systems I have.
In the future, there will be potential for FDS, Mega CD and PCE-CD
support. But those will all be add-ons, and they'll all be really
difficult and challenge the entire design of higan's UI (it's entirely
cartridge-driven at this time.) None of them will be entirely new cores
like this one.
2017-01-11 20:27:30 +00:00
|
|
|
|| type == ".ms" || type == ".sms"
|
|
|
|
|| type == ".md" || type == ".smd" || type == ".gen"
|
|
|
|
|| type == ".pce"
|
2015-08-21 11:29:53 +00:00
|
|
|
|| type == ".gb"
|
|
|
|
|| type == ".gbc"
|
|
|
|
|| type == ".gba"
|
Update to v101r30 release.
byuu says:
Changelog:
- SMS: added cartridge ROM/RAM mirroring (fixes Alex Kidd)
- SMS: fixed 8x16 sprite mode (fixes Wonder Boy, Ys graphics)
- Z80: emulated "ex (sp),hl" instruction
- Z80: fixed INx NF (should be set instead of cleared)
- Z80: fixed loop condition check for CPxR, INxR, LDxR, OTxR (fixes
walking in Wonder Boy)
- SFC: removed Debugger and sfc/debugger.hpp
- icarus: connected MS, GG, MD importing to the scan dialog
- PCE: added emulation skeleton to higan and icarus
At this point, Master System games are fairly highly compatible, sans
audio. Game Gear games are running, but I need to crop the resolution
and support the higher color palette that they can utilize. It's really
something else the way they handled the resolution shrink on that thing.
The last change is obviously going to be the biggest news.
I'm very well aware it's not an ideal time to start on a new emulation
core, with the MS and MD cores only just now coming to life with no
audio support.
But, for whatever reason, my heart's really set on working on the PC
Engine. I wanted to write the final higan skeleton core, and get things
ready so that whenever I'm in the mood to work on the PCE, I can do so.
The skeleton is far and away the most tedious and obnoxious part of the
emulator development, because it's basically all just lots of
boilerplate templated code, lots of new files to create, etc.
I really don't know how things are going to proceed ... but I can say
with 99.9% certainty that this will be the final brand new core ever
added to higan -- at least one written by me, that is. This was
basically the last system from my childhood that I ever cared about.
It's the last 2D system with games that I really enjoy playing. No other
system is worth dividing my efforts and reducing the quality and amount
of time to work on the systems I have.
In the future, there will be potential for FDS, Mega CD and PCE-CD
support. But those will all be add-ons, and they'll all be really
difficult and challenge the entire design of higan's UI (it's entirely
cartridge-driven at this time.) None of them will be entirely new cores
like this one.
2017-01-11 20:27:30 +00:00
|
|
|
|| type == ".gg"
|
2015-08-21 11:29:53 +00:00
|
|
|
|| type == ".bs"
|
|
|
|
|| type == ".st";
|
|
|
|
}
|