Update to v104r09 release.
byuu says: Changelog: - processor/upd96050: SGN should select between (A,B).S1 flag using ASL opcode bit - processor/upd96050: use a temporary to cache new S1, then compute OV1 using old S1, then assign new S1 - processor/upd96050: add SR.(siack,soack) and connect to relevant jump instructions (serial not implemented) - processor/upd96050: initialize SR properly in power() [r08 regression] - icarus: improve Makefile rules [Screwtape] - higan: new program icon - icarus: new program icon
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 40 KiB |
|
@ -0,0 +1,84 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="256mm"
|
||||||
|
height="256mm"
|
||||||
|
viewBox="0 0 256 256"
|
||||||
|
version="1.1"
|
||||||
|
id="svg8"
|
||||||
|
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
|
||||||
|
sodipodi:docname="higan.svg">
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="0.5"
|
||||||
|
inkscape:cx="-264.38189"
|
||||||
|
inkscape:cy="632.78774"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1028"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1" />
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(0,-41)">
|
||||||
|
<circle
|
||||||
|
id="path10"
|
||||||
|
cx="128.0"
|
||||||
|
cy="169.0"
|
||||||
|
r="120.0"
|
||||||
|
style="stroke-width:0.25;fill:#ffc0c0;fill-opacity:1" />
|
||||||
|
<g
|
||||||
|
aria-label="火"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:254.9591217px;line-height:1.25;font-family:KaiTi;-inkscape-font-specification:KaiTi;letter-spacing:0px;word-spacing:0px;fill:#e01818;fill-opacity:1;stroke:#e01818;stroke-width:9;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="text818"
|
||||||
|
transform="translate(318.55834,64.029166)">
|
||||||
|
<path
|
||||||
|
style="fill:#e01818;fill-opacity:1;stroke:#e01818;stroke-width:9;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m -194.12628,101.7548 q 15.93495,23.90242 34.85769,43.8211 19.91869,19.91868 37.8455,30.87396 18.92275,9.95934 40.833295,16.93088 21.91055,5.9756 -2.987802,7.96747 -24.898353,1.99187 -37.845493,0 -11.95121,-0.99594 -27.88616,-21.91055 -14.93901,-20.91462 -46.8089,-66.72758 -5.9756,25.89428 -13.94307,41.82923 -7.96748,14.93901 -26.89022,30.87395 -18.92275,14.93901 -39.83737,17.92682 -19.91868,3.98373 -3.98373,-3.98374 16.93088,-6.97154 33.86176,-21.91055 17.92681,-14.93901 26.89022,-34.85769 8.9634,-20.91462 10.95527,-50.79264 2.9878,-29.878022 1.99187,-50.792637 0,-20.914616 -4.97967,-28.882088 -4.97967,-8.963407 2.9878,-5.9756048 8.96341,1.9918681 16.93088,5.9756048 8.96341,2.987802 5.9756,8.963406 -2.9878,4.979671 -5.9756,33.861759 -1.99187,27.886153 -1.99187,46.8089 z"
|
||||||
|
id="path827"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:#e01818;fill-opacity:1;stroke:#e01818;stroke-width:9;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m -110.28062,50.929737 q 7.96747,6.971538 0,8.963407 -6.97154,0.995934 -22.90648,10.955274 -14.93901,8.963407 -28.88209,15.934945 -12.94714,5.975604 -1.99187,-3.983736 11.95121,-10.955275 21.91055,-21.910549 10.95528,-10.955275 10.95528,-17.926814 0,-7.967472 6.97153,-3.983736 6.97154,3.983736 13.94308,11.951209 z"
|
||||||
|
id="path825"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:#e01818;fill-opacity:1;stroke:#e01818;stroke-width:9;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m -261.66505,69.757659 q -15.93494,-24.898352 0,-15.934945 15.93495,7.967472 20.91462,14.939011 4.97967,5.975604 0.99593,16.930876 -3.98373,10.95528 -21.91055,-15.934942 z"
|
||||||
|
id="path820"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 4.1 KiB |
|
@ -12,7 +12,7 @@ using namespace nall;
|
||||||
|
|
||||||
namespace Emulator {
|
namespace Emulator {
|
||||||
static const string Name = "higan";
|
static const string Name = "higan";
|
||||||
static const string Version = "104.08";
|
static const string Version = "104.09";
|
||||||
static const string Author = "byuu";
|
static const string Author = "byuu";
|
||||||
static const string License = "GPLv3";
|
static const string License = "GPLv3";
|
||||||
static const string Website = "http://byuu.org/";
|
static const string Website = "http://byuu.org/";
|
||||||
|
|
|
@ -31,7 +31,7 @@ auto uPD96050::execOP(uint24 opcode) -> void {
|
||||||
case 4: idb = regs.dp; break;
|
case 4: idb = regs.dp; break;
|
||||||
case 5: idb = regs.rp; break;
|
case 5: idb = regs.rp; break;
|
||||||
case 6: idb = dataROM[regs.rp]; break;
|
case 6: idb = dataROM[regs.rp]; break;
|
||||||
case 7: idb = 0x8000 - flags.a.s1; break;
|
case 7: idb = 0x8000 - (!asl ? flags.a.s1 : flags.b.s1); break;
|
||||||
case 8: idb = regs.dr; regs.sr.rqm = 1; break;
|
case 8: idb = regs.dr; regs.sr.rqm = 1; break;
|
||||||
case 9: idb = regs.dr; break;
|
case 9: idb = regs.dr; break;
|
||||||
case 10: idb = regs.sr; break;
|
case 10: idb = regs.sr; break;
|
||||||
|
@ -81,6 +81,7 @@ auto uPD96050::execOP(uint24 opcode) -> void {
|
||||||
flag.z = r == 0;
|
flag.z = r == 0;
|
||||||
|
|
||||||
switch(alu) {
|
switch(alu) {
|
||||||
|
|
||||||
case 1: //OR
|
case 1: //OR
|
||||||
case 2: //AND
|
case 2: //AND
|
||||||
case 3: //XOR
|
case 3: //XOR
|
||||||
|
@ -93,16 +94,13 @@ auto uPD96050::execOP(uint24 opcode) -> void {
|
||||||
flag.ov1 = 0;
|
flag.ov1 = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 4: //SUB
|
case 4: //SUB
|
||||||
case 5: //ADD
|
case 5: //ADD
|
||||||
case 6: //SBB
|
case 6: //SBB
|
||||||
case 7: //ADC
|
case 7: //ADC
|
||||||
case 8: //DEC
|
case 8: //DEC
|
||||||
case 9: { //INC
|
case 9: { //INC
|
||||||
if(!flag.ov1) {
|
|
||||||
flag.s1 = flag.s0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(alu & 1) {
|
if(alu & 1) {
|
||||||
//addition
|
//addition
|
||||||
flag.ov0 = (q ^ r) & ~(q ^ p) & 0x8000;
|
flag.ov0 = (q ^ r) & ~(q ^ p) & 0x8000;
|
||||||
|
@ -118,25 +116,30 @@ auto uPD96050::execOP(uint24 opcode) -> void {
|
||||||
flag.ovh[1] = flag.ovh[0];
|
flag.ovh[1] = flag.ovh[0];
|
||||||
flag.ovh[0] = flag.ov0;
|
flag.ovh[0] = flag.ov0;
|
||||||
|
|
||||||
|
boolean s1 = !flag.ov1 ? flag.s0 : flag.s1;
|
||||||
flag.ov1 = (
|
flag.ov1 = (
|
||||||
(flag.ovh[0] ^ flag.ovh[1] ^ flag.ovh[2])
|
(flag.ovh[0] ^ flag.ovh[1] ^ flag.ovh[2])
|
||||||
| (flag.ovh[0] & !flag.ovh[1] & flag.ovh[2] & flag.s0 == flag.s1)
|
| (flag.ovh[0] & !flag.ovh[1] & flag.ovh[2] & flag.s0 == flag.s1)
|
||||||
);
|
);
|
||||||
|
flag.s1 = s1;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 11: { //SHR1 (ASR)
|
case 11: { //SHR1 (ASR)
|
||||||
flag.c = q & 1;
|
flag.c = q & 1;
|
||||||
flag.ov0 = 0;
|
flag.ov0 = 0;
|
||||||
flag.ov1 = 0;
|
flag.ov1 = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 12: { //SHL1 (ROL)
|
case 12: { //SHL1 (ROL)
|
||||||
flag.c = q >> 15;
|
flag.c = q >> 15;
|
||||||
flag.ov0 = 0;
|
flag.ov0 = 0;
|
||||||
flag.ov1 = 0;
|
flag.ov1 = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(asl) {
|
switch(asl) {
|
||||||
|
@ -209,10 +212,10 @@ auto uPD96050::execJP(uint24 opcode) -> void {
|
||||||
case 0x0b3: if((regs.dp & 0x0f) != 0x0f) regs.pc = jp; return; //JDPLNF
|
case 0x0b3: if((regs.dp & 0x0f) != 0x0f) regs.pc = jp; return; //JDPLNF
|
||||||
|
|
||||||
//serial input/output acknowledge not emulated
|
//serial input/output acknowledge not emulated
|
||||||
case 0x0b4: if(0) regs.pc = jp; return; //JNSIAK
|
case 0x0b4: if(regs.sr.siack == 0) regs.pc = jp; return; //JNSIAK
|
||||||
case 0x0b6: if(0) regs.pc = jp; return; //JSIAK
|
case 0x0b6: if(regs.sr.siack == 1) regs.pc = jp; return; //JSIAK
|
||||||
case 0x0b8: if(0) regs.pc = jp; return; //JNSOAK
|
case 0x0b8: if(regs.sr.soack == 0) regs.pc = jp; return; //JNSOAK
|
||||||
case 0x0ba: if(0) regs.pc = jp; return; //JSOAK
|
case 0x0ba: if(regs.sr.soack == 1) regs.pc = jp; return; //JSOAK
|
||||||
|
|
||||||
case 0x0bc: if(regs.sr.rqm == 0) regs.pc = jp; return; //JNRQM
|
case 0x0bc: if(regs.sr.rqm == 0) regs.pc = jp; return; //JNRQM
|
||||||
case 0x0be: if(regs.sr.rqm == 1) regs.pc = jp; return; //JRQM
|
case 0x0be: if(regs.sr.rqm == 1) regs.pc = jp; return; //JRQM
|
||||||
|
|
|
@ -24,9 +24,11 @@ auto uPD96050::Status::serialize(serializer& s) -> void {
|
||||||
s.boolean(drc);
|
s.boolean(drc);
|
||||||
s.boolean(dma);
|
s.boolean(dma);
|
||||||
s.boolean(drs);
|
s.boolean(drs);
|
||||||
s.boolean(uf0);
|
s.boolean(usf0);
|
||||||
s.boolean(uf1);
|
s.boolean(usf1);
|
||||||
s.boolean(rqm);
|
s.boolean(rqm);
|
||||||
|
s.boolean(siack);
|
||||||
|
s.boolean(soack);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto uPD96050::Registers::serialize(serializer& s) -> void {
|
auto uPD96050::Registers::serialize(serializer& s) -> void {
|
||||||
|
|
|
@ -26,6 +26,8 @@ auto uPD96050::power() -> void {
|
||||||
regs.rp = 0x0000;
|
regs.rp = 0x0000;
|
||||||
regs.dp = 0x0000;
|
regs.dp = 0x0000;
|
||||||
regs.sp = 0x0;
|
regs.sp = 0x0;
|
||||||
|
regs.si = 0x0000;
|
||||||
|
regs.so = 0x0000;
|
||||||
regs.k = 0x0000;
|
regs.k = 0x0000;
|
||||||
regs.l = 0x0000;
|
regs.l = 0x0000;
|
||||||
regs.m = 0x0000;
|
regs.m = 0x0000;
|
||||||
|
@ -35,8 +37,9 @@ auto uPD96050::power() -> void {
|
||||||
regs.tr = 0x0000;
|
regs.tr = 0x0000;
|
||||||
regs.trb = 0x0000;
|
regs.trb = 0x0000;
|
||||||
regs.dr = 0x0000;
|
regs.dr = 0x0000;
|
||||||
regs.si = 0x0000;
|
regs.sr = 0x0000;
|
||||||
regs.so = 0x0000;
|
regs.sr.siack = 0;
|
||||||
|
regs.sr.soack = 0;
|
||||||
|
|
||||||
flags.a = 0x0000;
|
flags.a = 0x0000;
|
||||||
flags.b = 0x0000;
|
flags.b = 0x0000;
|
||||||
|
|
|
@ -55,44 +55,49 @@ struct uPD96050 {
|
||||||
boolean s0; //sign 0
|
boolean s0; //sign 0
|
||||||
boolean s1; //sign 1
|
boolean s1; //sign 1
|
||||||
|
|
||||||
boolean ovh[3]; //overflow history (internal)
|
//internal
|
||||||
|
boolean ovh[3]; //overflow 0 history
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Status {
|
struct Status {
|
||||||
inline operator uint() const {
|
inline operator uint() const {
|
||||||
bool _drs = drs & !drc; //when DRC=1, DRS=0
|
bool _drs = drs & !drc; //when DRC=1, DRS=0
|
||||||
return p0 << 0 | p1 << 1 | ei << 7 | sic << 8 | soc << 9 | drc << 10
|
return p0 << 0 | p1 << 1 | ei << 7 | sic << 8 | soc << 9 | drc << 10
|
||||||
| dma << 11 | _drs << 12 | uf0 << 13 | uf1 << 14 | rqm << 15;
|
| dma << 11 | _drs << 12 | usf0 << 13 | usf1 << 14 | rqm << 15;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline auto operator=(uint16 data) -> Status& {
|
inline auto operator=(uint16 data) -> Status& {
|
||||||
p0 = data.bit( 0);
|
p0 = data.bit( 0);
|
||||||
p1 = data.bit( 1);
|
p1 = data.bit( 1);
|
||||||
ei = data.bit( 7);
|
ei = data.bit( 7);
|
||||||
sic = data.bit( 8);
|
sic = data.bit( 8);
|
||||||
soc = data.bit( 9);
|
soc = data.bit( 9);
|
||||||
drc = data.bit(10);
|
drc = data.bit(10);
|
||||||
dma = data.bit(11);
|
dma = data.bit(11);
|
||||||
drs = data.bit(12);
|
drs = data.bit(12);
|
||||||
uf0 = data.bit(13);
|
usf0 = data.bit(13);
|
||||||
uf1 = data.bit(14);
|
usf1 = data.bit(14);
|
||||||
rqm = data.bit(15);
|
rqm = data.bit(15);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto serialize(serializer&) -> void;
|
auto serialize(serializer&) -> void;
|
||||||
|
|
||||||
boolean p0; //output port 0
|
boolean p0; //output port 0
|
||||||
boolean p1; //output port 1
|
boolean p1; //output port 1
|
||||||
boolean ei; //enable interrupts
|
boolean ei; //enable interrupts
|
||||||
boolean sic; //serial input control (0 = 16-bit; 1 = 8-bit)
|
boolean sic; //serial input control (0 = 16-bit; 1 = 8-bit)
|
||||||
boolean soc; //serial output control (0 = 16-bit; 1 = 8-bit)
|
boolean soc; //serial output control (0 = 16-bit; 1 = 8-bit)
|
||||||
boolean drc; //data register size (0 = 16-bit; 1 = 8-bit)
|
boolean drc; //data register size (0 = 16-bit; 1 = 8-bit)
|
||||||
boolean dma; //data register DMA mode
|
boolean dma; //data register DMA mode
|
||||||
boolean drs; //data register status (1 = active; 0 = stopped)
|
boolean drs; //data register status (1 = active; 0 = stopped)
|
||||||
boolean uf0; //user flag 0
|
boolean usf0; //user flag 0
|
||||||
boolean uf1; //user flag 1
|
boolean usf1; //user flag 1
|
||||||
boolean rqm; //request mode (=1 on internal access; =0 on external access)
|
boolean rqm; //request for master (=1 on internal access; =0 on external access)
|
||||||
|
|
||||||
|
//internal
|
||||||
|
boolean siack; //serial input acknowledge
|
||||||
|
boolean soack; //serial output acknowledge
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Registers {
|
struct Registers {
|
||||||
|
|
|
@ -63,7 +63,7 @@ obj/ui-tools.o: $(ui)/tools/tools.cpp $(call rwildcard,$(ui)/)
|
||||||
obj/ui-presentation.o: $(ui)/presentation/presentation.cpp $(call rwildcard,$(ui)/)
|
obj/ui-presentation.o: $(ui)/presentation/presentation.cpp $(call rwildcard,$(ui)/)
|
||||||
|
|
||||||
obj/ui-resource.o:
|
obj/ui-resource.o:
|
||||||
$(windres) data/resource.rc obj/ui-resource.o
|
$(windres) data/higan.rc obj/ui-resource.o
|
||||||
|
|
||||||
# targets
|
# targets
|
||||||
build: $(objects)
|
build: $(objects)
|
||||||
|
@ -88,9 +88,9 @@ else ifeq ($(platform),macosx)
|
||||||
cp -R systems/* ~/Library/Application\ Support/$(name)/
|
cp -R systems/* ~/Library/Application\ Support/$(name)/
|
||||||
else ifneq ($(filter $(platform),linux bsd),)
|
else ifneq ($(filter $(platform),linux bsd),)
|
||||||
mkdir -p $(prefix)/bin/
|
mkdir -p $(prefix)/bin/
|
||||||
mkdir -p $(prefix)/share/$(name)/
|
|
||||||
mkdir -p $(prefix)/share/applications/
|
mkdir -p $(prefix)/share/applications/
|
||||||
mkdir -p $(prefix)/share/icons/
|
mkdir -p $(prefix)/share/icons/
|
||||||
|
mkdir -p $(prefix)/share/$(name)/
|
||||||
cp out/$(name) $(prefix)/bin/$(name)
|
cp out/$(name) $(prefix)/bin/$(name)
|
||||||
cp -R systems/* $(prefix)/share/$(name)/
|
cp -R systems/* $(prefix)/share/$(name)/
|
||||||
cp data/$(name).desktop $(prefix)/share/applications/$(name).desktop
|
cp data/$(name).desktop $(prefix)/share/applications/$(name).desktop
|
||||||
|
|
|
@ -19,8 +19,10 @@ all: $(objects)
|
||||||
ifeq ($(platform),macosx)
|
ifeq ($(platform),macosx)
|
||||||
@if [ -d out/$(name).app ]; then rm -r out/$(name).app; fi
|
@if [ -d out/$(name).app ]; then rm -r out/$(name).app; fi
|
||||||
mkdir -p out/$(name).app/Contents/MacOS/
|
mkdir -p out/$(name).app/Contents/MacOS/
|
||||||
mv out/$(name) out/$(name).app/Contents/MacOS/
|
mkdir -p out/$(name).app/Contents/Resources/
|
||||||
cp $(name).plist out/$(name).app/Contents/Info.plist
|
mv out/$(name) out/$(name).app/Contents/MacOS/$(name)
|
||||||
|
cp data/$(name).plist out/$(name).app/Contents/Info.plist
|
||||||
|
sips -s format icns data/$(name).png --out out/$(name).app/Contents/Resources/$(name).icns
|
||||||
endif
|
endif
|
||||||
|
|
||||||
obj/hiro.o: ../hiro/hiro.cpp
|
obj/hiro.o: ../hiro/hiro.cpp
|
||||||
|
@ -30,7 +32,7 @@ obj/icarus.o: icarus.cpp $(call rwildcard,core/) $(call rwildcard,heuristics/) $
|
||||||
$(compiler) $(cppflags) $(flags) -o obj/icarus.o -c icarus.cpp
|
$(compiler) $(cppflags) $(flags) -o obj/icarus.o -c icarus.cpp
|
||||||
|
|
||||||
obj/resource.o:
|
obj/resource.o:
|
||||||
$(windres) ../hiro/windows/hiro.rc obj/resource.o
|
$(windres) data/icarus.rc obj/resource.o
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
ifeq ($(platform),macosx)
|
ifeq ($(platform),macosx)
|
||||||
|
@ -43,9 +45,14 @@ install:
|
||||||
ifeq ($(platform),macosx)
|
ifeq ($(platform),macosx)
|
||||||
cp -R out/$(name).app /Applications/$(name).app
|
cp -R out/$(name).app /Applications/$(name).app
|
||||||
else ifneq ($(filter $(platform),linux bsd),)
|
else ifneq ($(filter $(platform),linux bsd),)
|
||||||
|
mkdir -p $(prefix)/bin/
|
||||||
|
mkdir -p $(prefix)/share/applications/
|
||||||
|
mkdir -p $(prefix)/share/icons/
|
||||||
mkdir -p $(prefix)/share/$(name)/Database/
|
mkdir -p $(prefix)/share/$(name)/Database/
|
||||||
if [ -f out/$(name) ]; then cp out/$(name) $(prefix)/bin/$(name); fi
|
if [ -f out/$(name) ]; then cp out/$(name) $(prefix)/bin/$(name); fi
|
||||||
cp -R Database/* $(prefix)/share/$(name)/Database/
|
cp -R Database/* $(prefix)/share/$(name)/Database/
|
||||||
|
cp data/$(name).desktop $(prefix)/share/applications/$(name).desktop
|
||||||
|
cp data/$(name).png $(prefix)/share/icons/$(name).png
|
||||||
endif
|
endif
|
||||||
|
|
||||||
uninstall:
|
uninstall:
|
||||||
|
@ -53,4 +60,6 @@ ifeq ($(platform),macosx)
|
||||||
if [ -d /Applications/$(name).app ]; then rm -r /Applications/$(name).app; fi
|
if [ -d /Applications/$(name).app ]; then rm -r /Applications/$(name).app; fi
|
||||||
else ifneq ($(filter $(platform),linux bsd),)
|
else ifneq ($(filter $(platform),linux bsd),)
|
||||||
if [ -f $(prefix)/bin/$(name) ]; then rm $(prefix)/bin/$(name); fi
|
if [ -f $(prefix)/bin/$(name) ]; then rm $(prefix)/bin/$(name); fi
|
||||||
|
if [ -f $(prefix)/share/applications/$(name).desktop ]; then rm $(prefix)/share/applications/$(name).desktop; fi
|
||||||
|
if [ -f $(prefix)/share/icons/$(name).png ]; then rm $(prefix)/share/icons/$(name).png; fi
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||||
|
<assemblyIdentity type="win32" name="icarus" version="1.0.0.0" processorArchitecture="*"/>
|
||||||
|
<dependency>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
|
||||||
|
</dependentAssembly>
|
||||||
|
</dependency>
|
||||||
|
<asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
|
||||||
|
<dpiAware>false</dpiAware>
|
||||||
|
</asmv3:windowsSettings>
|
||||||
|
</asmv3:application>
|
||||||
|
</assembly>
|
|
@ -0,0 +1,8 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Name=icarus
|
||||||
|
Comment=Emulator
|
||||||
|
Exec=icarus
|
||||||
|
Icon=icarus
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Categories=Game;Emulator;
|
After Width: | Height: | Size: 70 KiB |
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>org.byuu.icarus</string>
|
||||||
|
<key>CFBundleDisplayName</key>
|
||||||
|
<string>icarus</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>icarus</string>
|
||||||
|
<key>CFBundleIconFile</key>
|
||||||
|
<string>icarus.icns</string>
|
||||||
|
<key>NSHighResolutionCapable</key>
|
||||||
|
<true/>
|
||||||
|
<key>NSSupportsAutomaticGraphicsSwitching</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
After Width: | Height: | Size: 50 KiB |
|
@ -0,0 +1,2 @@
|
||||||
|
1 24 "icarus.Manifest"
|
||||||
|
2 ICON DISCARDABLE "icarus.ico"
|
|
@ -0,0 +1,80 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="256mm"
|
||||||
|
height="256mm"
|
||||||
|
viewBox="0 0 256 256"
|
||||||
|
version="1.1"
|
||||||
|
id="svg8"
|
||||||
|
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
|
||||||
|
sodipodi:docname="icarus.svg">
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="0.5"
|
||||||
|
inkscape:cx="62.34093"
|
||||||
|
inkscape:cy="560"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1028"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1" />
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(0,-41)">
|
||||||
|
<circle
|
||||||
|
id="path10"
|
||||||
|
cx="128.0"
|
||||||
|
cy="169.0"
|
||||||
|
r="120.0"
|
||||||
|
style="stroke-width:0.25;fill:#b8b8ff;fill-opacity:1" />
|
||||||
|
<g
|
||||||
|
aria-label="氷"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:260.07336426px;line-height:1.25;font-family:KaiTi;-inkscape-font-specification:KaiTi;letter-spacing:0px;word-spacing:0px;fill:#4050e0;fill-opacity:1;stroke:#4050e0;stroke-width:6;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="text818">
|
||||||
|
<path
|
||||||
|
style="fill:#4050e0;fill-opacity:1;stroke:#4050e0;stroke-width:6;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 130.80961,146.24049 q 5.07956,5.07956 14.22276,15.23868 14.22277,-13.20685 25.39779,-27.42962 12.19094,-15.23867 11.17503,-24.38187 0,-10.15912 10.15912,-4.06365 10.15911,6.09547 14.22276,12.19094 4.06364,5.07956 -2.03182,7.11138 -6.09547,1.01591 -22.35006,14.22276 -15.23867,12.19094 -32.50917,26.4137 13.20685,11.17503 23.36597,20.31823 11.17502,9.14321 24.38187,18.28641 14.22277,8.1273 27.42962,14.22276 14.22276,5.07956 21.33414,7.11139 7.11138,2.03182 -3.04773,5.07955 -9.14321,2.03183 -23.36597,3.04774 -14.22276,0 -21.33414,-2.03182 -6.09547,-3.04774 -11.17503,-8.1273 -4.06365,-5.07956 -24.38188,-27.42961 -19.30232,-23.36597 -31.49326,-39.62055 1.01591,41.65237 2.03182,64.00243 2.03183,22.35005 0,34.54099 -2.03182,12.19094 -8.12729,19.30232 -5.07956,7.11138 -8.12729,4.06365 -2.03182,-2.03183 -7.11138,-11.17503 -5.07956,-8.12729 -16.254587,-15.23867 -11.175027,-8.1273 1.015912,-5.07956 12.190935,2.03182 16.254585,2.03182 4.06365,-1.01591 6.09547,-7.11138 2.03182,-7.11138 2.03182,-46.73193 0,-40.63646 -1.01591,-77.20928 -1.01591,-37.58873 -6.09547,-45.716022 -5.07956,-9.143205 4.06365,-7.111382 10.15911,1.015912 16.25458,5.079558 7.11138,3.047735 4.06365,9.143205 -3.04774,5.079557 -4.06365,15.238673 -1.01591,10.159118 -1.01591,51.811488 z"
|
||||||
|
id="path822" />
|
||||||
|
<path
|
||||||
|
style="fill:#4050e0;fill-opacity:1;stroke:#4050e0;stroke-width:6;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 88.141325,149.28823 q 5.079558,1.01591 14.222765,7.11138 9.1432,6.09547 4.06364,10.15911 -5.07955,4.06365 -12.190935,18.28641 -6.09547,14.22276 -14.222763,25.39779 -8.127292,10.15912 -19.30232,19.30232 -11.175027,8.12729 -21.334143,12.19094 -9.143204,3.04774 -16.254585,5.07956 -6.095469,1.01591 5.079558,-6.09547 11.175027,-7.11138 21.334143,-17.2705 11.175027,-10.15911 18.286408,-21.33414 8.127293,-12.19094 11.175028,-20.31823 3.047735,-9.14321 3.047735,-14.22276 1.015911,-5.07956 -3.047735,-5.07956 -4.063646,0 -15.238674,4.06364 -10.159116,4.06365 -15.238674,6.09547 -4.063646,2.03183 -13.20685,-3.04773 -8.127293,-6.09547 2.031823,-6.09547 11.175027,-1.01591 24.381878,-5.07956 14.222762,-5.07956 17.270497,-7.11138 4.063646,-3.04773 9.143204,-2.03182 z"
|
||||||
|
id="path820" />
|
||||||
|
<path
|
||||||
|
style="fill:#4050e0;fill-opacity:1;stroke:#4050e0;stroke-width:6;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 63.759447,101.54038 q 9.143204,1.01591 18.286409,5.07956 9.143204,4.06365 11.175027,11.17503 2.031823,7.11138 -1.015912,11.17503 -3.047734,4.06364 -15.238673,-4.06365 -11.175028,-9.1432 -16.254586,-16.25459 -5.079557,-8.12729 3.047735,-7.11138 z"
|
||||||
|
id="path815" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 4.9 KiB |
|
@ -57,6 +57,8 @@ Icarus icarus;
|
||||||
|
|
||||||
#include <nall/main.hpp>
|
#include <nall/main.hpp>
|
||||||
auto nall::main(string_vector args) -> void {
|
auto nall::main(string_vector args) -> void {
|
||||||
|
Application::setName("icarus");
|
||||||
|
|
||||||
if(args.size() == 2 && args[1] == "--name") {
|
if(args.size() == 2 && args[1] == "--name") {
|
||||||
return print("icarus");
|
return print("icarus");
|
||||||
}
|
}
|
||||||
|
|