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
This commit is contained in:
Tim Allen 2017-08-31 23:58:54 +10:00
parent b47488ab09
commit 5352c5ab27
19 changed files with 273 additions and 43 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 40 KiB

84
higan/data/higan.svg Normal file
View File

@ -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

View File

@ -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/";

View File

@ -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

View File

@ -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 {

View File

@ -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;

View File

@ -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 {

View File

@ -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

View File

@ -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

View File

@ -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>

View File

@ -0,0 +1,8 @@
[Desktop Entry]
Name=icarus
Comment=Emulator
Exec=icarus
Icon=icarus
Terminal=false
Type=Application
Categories=Game;Emulator;

BIN
icarus/data/icarus.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

18
icarus/data/icarus.plist Normal file
View File

@ -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>

BIN
icarus/data/icarus.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

2
icarus/data/icarus.rc Normal file
View File

@ -0,0 +1,2 @@
1 24 "icarus.Manifest"
2 ICON DISCARDABLE "icarus.ico"

80
icarus/data/icarus.svg Normal file
View File

@ -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

View File

@ -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");
} }