diff --git a/ports/parsec47/PARSEC47.sh b/ports/parsec47/PARSEC47.sh
new file mode 100644
index 0000000000..c9cac7d330
--- /dev/null
+++ b/ports/parsec47/PARSEC47.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+XDG_DATA_HOME=${XDG_DATA_HOME:-$HOME/.local/share}
+
+if [ -d "/opt/system/Tools/PortMaster/" ]; then
+ controlfolder="/opt/system/Tools/PortMaster"
+elif [ -d "/opt/tools/PortMaster/" ]; then
+ controlfolder="/opt/tools/PortMaster"
+elif [ -d "$XDG_DATA_HOME/PortMaster/" ]; then
+ controlfolder="$XDG_DATA_HOME/PortMaster"
+else
+ controlfolder="/roms/ports/PortMaster"
+fi
+
+source $controlfolder/control.txt
+
+[ -f "${controlfolder}/mod_${CFW_NAME}.txt" ] && source "${controlfolder}/mod_${CFW_NAME}.txt"
+
+get_controls
+
+GAMEDIR=/$directory/ports/parsec47
+CONFDIR="$GAMEDIR/conf"
+BINARY=PARSEC47
+
+> "$GAMEDIR/log.txt" && exec > >(tee "$GAMEDIR/log.txt") 2>&1
+
+mkdir -p "$GAMEDIR/conf"
+
+cd $GAMEDIR
+
+export LD_LIBRARY_PATH="$GAMEDIR/libs.${DEVICE_ARCH}:$LD_LIBRARY_PATH"
+export SDL_GAMECONTROLLERCONFIG="$sdl_controllerconfig"
+export TEXTINPUTINTERACTIVE="Y"
+
+if [ -f "${controlfolder}/libgl_${CFW_NAME}.txt" ]; then
+ source "${controlfolder}/libgl_${CFW_NAME}.txt"
+else
+ source "${controlfolder}/libgl_default.txt"
+fi
+
+$GPTOKEYB "$BINARY" -c ./$BINARY.gptk &
+pm_platform_helper "$GAMEDIR/$BINARY"
+./$BINARY
+pm_finish
\ No newline at end of file
diff --git a/ports/parsec47/README.md b/ports/parsec47/README.md
new file mode 100644
index 0000000000..fd2890e1f9
--- /dev/null
+++ b/ports/parsec47/README.md
@@ -0,0 +1,19 @@
+# Thanks
+Thanks to the [Kenta Cho & M-HT](http://www.asahi-net.or.jp/~cs8k-cyu/windows/p47_e.html) for making this game and making it available for free.
+
+## Controls
+
+| Button | Action |
+|--|--|
+|DPAD| Move |
+|A| Shoot |
+|B| Slow / Roll, Lock |
+|x| Pause|
+
+## Building
+
+```
+git clone https://github.com/Cebion/parsec47_pm.git
+compile libbulletml in subfolder
+sources/buildLinux.sh
+```
diff --git a/ports/parsec47/gameinfo.xml b/ports/parsec47/gameinfo.xml
new file mode 100644
index 0000000000..cc92d4d97b
--- /dev/null
+++ b/ports/parsec47/gameinfo.xml
@@ -0,0 +1,13 @@
+
+
+
+ ./PARSEC47.sh
+ PARSEC47
+ PARSEC47 is a retromodern hi-speed shoot 'em up where you get to defeat retro enemies modernly. The player must destroy enemies while avoiding their projectiles and collecting green clusters of boxes for points.
+ 20031129T000000
+ Kenta Cho
+ Self-Published
+ Shmup
+ ./parsec47/screenshot.png
+
+
\ No newline at end of file
diff --git a/ports/parsec47/parsec47/PARSEC47 b/ports/parsec47/parsec47/PARSEC47
new file mode 100644
index 0000000000..0cdf2d7145
Binary files /dev/null and b/ports/parsec47/parsec47/PARSEC47 differ
diff --git a/ports/parsec47/parsec47/PARSEC47.gptk b/ports/parsec47/parsec47/PARSEC47.gptk
new file mode 100644
index 0000000000..6bef2dcb26
--- /dev/null
+++ b/ports/parsec47/parsec47/PARSEC47.gptk
@@ -0,0 +1,32 @@
+back = esc
+start = enter
+
+a = z
+b = x
+x = p
+y = \"
+
+l1 = \"
+l2 = \"
+r1 = \"
+r2 = \"
+
+up = up
+down = down
+left = left
+right = right
+
+left_analog_up = up
+left_analog_down = down
+left_analog_left = left
+left_analog_right = right
+
+right_analog_up = \"
+right_analog_down = \"
+right_analog_left = \"
+right_analog_right = \"
+
+deadzone_mode = scaled_radial
+deadzone = 2000
+deadzone_scale = 8
+deadzone_delay = 16
\ No newline at end of file
diff --git a/ports/parsec47/parsec47/conf/.gitkeep b/ports/parsec47/parsec47/conf/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/ports/parsec47/parsec47/gl4es.aarch64/libEGL.so.1 b/ports/parsec47/parsec47/gl4es.aarch64/libEGL.so.1
new file mode 100644
index 0000000000..863418b02b
Binary files /dev/null and b/ports/parsec47/parsec47/gl4es.aarch64/libEGL.so.1 differ
diff --git a/ports/parsec47/parsec47/gl4es.aarch64/libGL.so.1 b/ports/parsec47/parsec47/gl4es.aarch64/libGL.so.1
new file mode 100644
index 0000000000..b2fe743db1
Binary files /dev/null and b/ports/parsec47/parsec47/gl4es.aarch64/libGL.so.1 differ
diff --git a/ports/parsec47/parsec47/images/title.bmp b/ports/parsec47/parsec47/images/title.bmp
new file mode 100644
index 0000000000..d40e60aa34
Binary files /dev/null and b/ports/parsec47/parsec47/images/title.bmp differ
diff --git a/ports/parsec47/parsec47/large/57way.xml b/ports/parsec47/parsec47/large/57way.xml
new file mode 100644
index 0000000000..9bb30d19e2
--- /dev/null
+++ b/ports/parsec47/parsec47/large/57way.xml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+ -100
+
+
+ 4
+
+
+ 50
+
+
+
+
+ 62-$rank*32
+
+
+
+ 26-$rank*8
+
+ -120
+
+
+ 6
+
+
+ 40
+
+
+
+
+ 40-$rank*30
+
+
+
+ 0.7
+
+
+
+ 1
+
+
+
diff --git a/ports/parsec47/parsec47/large/88way.xml b/ports/parsec47/parsec47/large/88way.xml
new file mode 100644
index 0000000000..789362eeed
--- /dev/null
+++ b/ports/parsec47/parsec47/large/88way.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ 1+$rank*4.7
+
+
+ 360/(1+$rank*4.7)
+
+
+ 150/(1+$rank*4.7)
+
+
+
+
+
+$rand*0.5+0.5
+
+ 10+$rand*10
+ 6
+
+
+ 60
+
+ 0.9
+
+
+
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/large/allround.xml b/ports/parsec47/parsec47/large/allround.xml
new file mode 100644
index 0000000000..422adf5c57
--- /dev/null
+++ b/ports/parsec47/parsec47/large/allround.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+ 2+$rank*7.6
+
+
+ 360/(2+$rank*7.6)
+ 1
+
+
+ 1
+
+
+ 42
+
+
+
diff --git a/ports/parsec47/parsec47/large/dr1_boss_1.xml b/ports/parsec47/parsec47/large/dr1_boss_1.xml
new file mode 100644
index 0000000000..cb79fc4271
--- /dev/null
+++ b/ports/parsec47/parsec47/large/dr1_boss_1.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+ 90/(2+3*$rank)
+
+ $rand*90-45
+
+
+
+
+
+ 90
+ 6
+
+ $1
+
+
+ 3
+
+
+ 60
+ 6
+
+ $1
+
+
+
+
+
+
+
+
+ $1+$rand*20-10
+
+
+
+
+ 1
+
+ $1
+ 1
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/large/dr1_boss_2.xml b/ports/parsec47/parsec47/large/dr1_boss_2.xml
new file mode 100644
index 0000000000..a5fc76a3ea
--- /dev/null
+++ b/ports/parsec47/parsec47/large/dr1_boss_2.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+ -30
+ 0.5
+
+
+ 2
+
+
+ 30
+ 0
+
+
+
+
+ 4
+ 1+$rank*6.9
+
+
+ -30
+ 0.2
+
+
+ 2
+
+
+ 30
+ 0
+
+
+
+
+ 4
+
+
+ 45
+
+
+
diff --git a/ports/parsec47/parsec47/large/forward_3way.xml b/ports/parsec47/parsec47/large/forward_3way.xml
new file mode 100644
index 0000000000..6bc0c9fed1
--- /dev/null
+++ b/ports/parsec47/parsec47/large/forward_3way.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+ 90-$rand*180
+
+
+ 54
+
+
+
+ 0.4
+
+
+ $rand*360
+ 1
+
+
+ 2
+
+
+ 118
+ 1
+
+
+
+
+ 2+$rank*7.2
+
+ 10-$rank*5
+ 3
+
+
+ 115
+ 1
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/large/grow.xml b/ports/parsec47/parsec47/large/grow.xml
new file mode 100644
index 0000000000..13a85253f9
--- /dev/null
+++ b/ports/parsec47/parsec47/large/grow.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+ 30-$rand*60
+ 0.4
+
+
+
+ 5-$rand*10
+
+ 86
+
+
+
+ 3+$rank*12.6
+
+
+ $1
+ 0.05
+
+
+ 5
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/large/growround.xml b/ports/parsec47/parsec47/large/growround.xml
new file mode 100644
index 0000000000..53a41962f8
--- /dev/null
+++ b/ports/parsec47/parsec47/large/growround.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+ 1+$rank*6.2
+
+ 16
+
+ -20+$rank*10
+
+
+
+
+ 56
+
+
+
+
+
+
+ 1+$rank*6.2
+
+ 16
+
+ 20-$rank*10
+
+
+
+
+
+
+
+ 1
+
+
+
diff --git a/ports/parsec47/parsec47/large/kr4_boss_rb_rockets.xml b/ports/parsec47/parsec47/large/kr4_boss_rb_rockets.xml
new file mode 100644
index 0000000000..0722fcd746
--- /dev/null
+++ b/ports/parsec47/parsec47/large/kr4_boss_rb_rockets.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+ 20+$rand*10
+ 40-$rand*80
+
+ 72-$rank*24
+
+
+
+
+
+ $2
+
+ $1
+
+
+
+ $2
+
+ $1*(-1)
+
+
+
+
+
+ 1.5
+
+
+ $1
+
+
+ 1+$rank*1.7
+
+ 4
+
+ $1
+
+
+
+
+
+
+
+
+
+ 0.8
+
+
+
diff --git a/ports/parsec47/parsec47/large/mnway.xml b/ports/parsec47/parsec47/large/mnway.xml
new file mode 100644
index 0000000000..63651c6327
--- /dev/null
+++ b/ports/parsec47/parsec47/large/mnway.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+ 1+$rank*2.9
+ 90/(1+$rank*2.9)
+
+ 36
+
+ 1+$rank*2.9
+ 90/(-1-$rank*2.9)
+
+ 36
+
+
+
+
+ $2*3
+
+
+ $1
+
+
+ $2
+
+
+
+
+
+
+
+ 1
+
+
+
diff --git a/ports/parsec47/parsec47/large/nway.xml b/ports/parsec47/parsec47/large/nway.xml
new file mode 100644
index 0000000000..026430212a
--- /dev/null
+++ b/ports/parsec47/parsec47/large/nway.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+ 0
+
+
+ 1+$rank*5.2
+
+
+ 25
+
+
+
+
+
+ -25
+
+
+ 1+$rank*5.2-1
+
+
+ -25
+
+
+
+
+ 50
+
+
+
+ 1
+
+
+
diff --git a/ports/parsec47/parsec47/large/pxa_boss_opening.xml b/ports/parsec47/parsec47/large/pxa_boss_opening.xml
new file mode 100644
index 0000000000..62f75e928d
--- /dev/null
+++ b/ports/parsec47/parsec47/large/pxa_boss_opening.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+ -45+$rand*90
+ 0.4+$rand*0.8
+
+
+ 200/(10+$rank*20)
+
+
+
diff --git a/ports/parsec47/parsec47/large/spread2blt.xml b/ports/parsec47/parsec47/large/spread2blt.xml
new file mode 100644
index 0000000000..4dd15b280b
--- /dev/null
+++ b/ports/parsec47/parsec47/large/spread2blt.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+ 120
+
+
+ 50
+
+ 240
+
+
+ 50
+
+
+
+ 1
+
+
+ 0.2
+ 40
+
+ 20
+ 2+$rank*8.2
+
+
+
+ $rand*360
+ 0.7+$rand*0.5
+
+
+
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/large/wide_spread.xml b/ports/parsec47/parsec47/large/wide_spread.xml
new file mode 100644
index 0000000000..6cf699aefd
--- /dev/null
+++ b/ports/parsec47/parsec47/large/wide_spread.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+ $rand*150-75
+
+
+ 32
+
+
+
+
+
+ -5-$rank*8
+
+
+ 2+$rank*4.5
+
+
+ 2.5
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
diff --git a/ports/parsec47/parsec47/largemove/down.xml b/ports/parsec47/parsec47/largemove/down.xml
new file mode 100644
index 0000000000..8d8b94f4d7
--- /dev/null
+++ b/ports/parsec47/parsec47/largemove/down.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+ 0.3
+ 1
+
+
+
+
diff --git a/ports/parsec47/parsec47/largemove/down_slow.xml b/ports/parsec47/parsec47/largemove/down_slow.xml
new file mode 100644
index 0000000000..09076507f8
--- /dev/null
+++ b/ports/parsec47/parsec47/largemove/down_slow.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+ 0.2
+ 1
+
+
+
+
diff --git a/ports/parsec47/parsec47/libs.aarch64/libbulletml.so.0d2 b/ports/parsec47/parsec47/libs.aarch64/libbulletml.so.0d2
new file mode 100644
index 0000000000..6acc6f5cd3
Binary files /dev/null and b/ports/parsec47/parsec47/libs.aarch64/libbulletml.so.0d2 differ
diff --git a/ports/parsec47/parsec47/licenses/LICENSE_gl4es.txt b/ports/parsec47/parsec47/licenses/LICENSE_gl4es.txt
new file mode 100644
index 0000000000..f34587f4f2
--- /dev/null
+++ b/ports/parsec47/parsec47/licenses/LICENSE_gl4es.txt
@@ -0,0 +1,20 @@
+Copyright (c) 2016-2018 Sebastien Chevalier
+Copyright (c) 2013-2016 Ryan Hileman
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/ports/parsec47/parsec47/licenses/LICENSE_libbulletml.txt b/ports/parsec47/parsec47/licenses/LICENSE_libbulletml.txt
new file mode 100644
index 0000000000..0e4a0e0139
--- /dev/null
+++ b/ports/parsec47/parsec47/licenses/LICENSE_libbulletml.txt
@@ -0,0 +1,165 @@
+libBulletML 0.0.5
+
+* Abstract
+
+It is a C++ library to handle BulletML, the Bullet Markup
+Language. You can use BulletML in your program without bothering to
+parse XML.
+
+If you want to know BulletML more, please see following web site by
+ABA (author of BulletML):
+http://www.asahi-net.or.jp/~cs8k-cyu/bulletml/index_e.html
+
+
+* Usage
+
+You can use it with VC and BorlandC++ and gcc and I wish, almost all
+compiler that supports standard C++.
+
+An example of this library is available in my software "siroi
+danmakukun":
+http://user.ecc.u-tokyo.ac.jp/~s31552/wp/sdmkun/sdmkun-1.5.6.zip
+You can see usage of this library in src/command_bulletml.* .
+
+
+* Tutorial
+
+This library's basic usage is event driven model.
+
+0. Get XML file written in BulletML.
+
+You can use BulletML file in "siroi danmakukun". (bosses.d/*.xml in
+archive)
+
+1. Include headers
+
+#include "bulletml/bulletmlparser.h"
+#include "bulletml/bulletmlparser-tinyxml.h"
+#include "bulletml/bulletmlrunner.h"
+
+2. Create class that inherits BulletMLRunner
+
+class BulletCommand : public BulletMLRunner {
+ // ...
+
+ // the bullet you will handle
+ Bullet* bullet_;
+}
+
+3. Implement all pure virtual function defined in bulletmlrunner.h
+
+For example:
+class BulletCommand : public BulletMLRunner {
+ virtual void doVanish() {
+ bullet_->die();
+ }
+
+ // ... and other pure virtual functions
+}
+
+createSimpleBullet and createBullet method should be implemented
+carefully. In libBulletML, all bullets are divided to two
+types. createSimpleBullet type does not have , createBullet
+type has . For example, "siroi danmakukun" uses two class:
+Shot and Enemy.
+
+When libBulletML handle element that does not have
+element, BulletMLRunner calls createSimpleBullet method with two
+arguments: direction and speed.
+
+In the other hand, if element has element,
+BulletMLRunner calls createBullet method with three arguments:
+direction, speed, and state. You should not care the detail of the
+state argument. But it should be given to the class derived from
+BulletMLRunner in its constructor. The creation of this class is
+described in next section.
+
+4. Create of the class derived from BulletMLRunner
+
+In libBulletML, the batteries are divided two types. One type is the
+battery that is defined in (first order battery),
+and one type is the battery that is created by the other battery
+(second, third, forth... battery).
+
+Then, you should create two constructors to handle these two kind of
+batteries.
+
+For example, first order battery is implemented like following:
+
+BulletCommand::BulletCommand(BulletMLParser* bp, Bullet* b)
+ : BulletMLRunner(bp), bullet_(b)
+
+For example, second, third... order battery is implemented like following:
+
+BulletCommand::BulletCommand(BulletMLState* bs, Bullet* b)
+ : BulletMLRunner(bs), bullet_(b)
+
+You should call this constructor when createBullet method is called.
+
+5. Create BulletML document
+
+BulletMLParser* bp = new BulletMLParserTinyXML("foo.xml");
+bp->build();
+
+Because parsing BulletML is slow, all xml files should be loaded in
+the initialization of the program.
+
+6. Create first order battery
+
+BulletCommand* bc = new BulletCommand(bp)
+
+7. Run BulletCommand in all turn.
+
+while (1) {
+ // the main loop of game
+
+ bc->run();
+}
+
+If some errors are occured, libBulletML throws BulletMLError. You can
+catch this exception.
+
+
+* Misc
+
+TinyXML is used to parse XML.
+http://www.gibaradunn.srac.org/tiny/index.shtml
+
+If you cannot understand this document (yes, it's poor document and
+writen in poor English), please ask me with email.
+
+
+* Modified BSD License
+
+Copyright (c) 2003, shinichiro.h All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * The name of the author may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+shinichiro.h
+ hamaji@nii.ac.jp
+ http://shinh.skr.jp/
diff --git a/ports/parsec47/parsec47/licenses/LICENSE_parsec47.txt b/ports/parsec47/parsec47/licenses/LICENSE_parsec47.txt
new file mode 100644
index 0000000000..25440803f9
--- /dev/null
+++ b/ports/parsec47/parsec47/licenses/LICENSE_parsec47.txt
@@ -0,0 +1,147 @@
+PARSEC47 readme_e.txt
+for Windows98/2000/XP(OpenGL required)
+ver. 0.2
+(C) Kenta Cho
+
+Defeat retro enemies modenly.
+Retromodern hispeed shmup, 'PARSEC47'.
+
+
+- How to install.
+
+Unpack p47_0_2.zip, and execute 'p47.exe'.
+(If the game is too heavy for your PC, please try 'p47_lowres.bat'.
+ This batch file launches the game in the low resolution mode.)
+
+
+- How to play.
+
+ - Movement Arrow/Num key / Joystick
+ - Shot [Z][L-Ctrl] / Trigger 1, 4, 5, 8
+ - Slow / Roll, Lock [X][L-Alt][L-Shift] / Trigger 2, 3, 6, 7
+ - Pause [P]
+
+Select the stage by a keyboard or a joystick.
+Press a shot key to start the game.
+All stages are endless and created randomly each time.
+The game continues until you lose all ships.
+
+Control your ship and destroy enemies.
+While holding a slow key, the ship becomes slow.
+
+You can also select the game mode from 2 types.
+Press a slow key in the title screen to change the game mode.
+Each mode has a different barrage pattern.
+
+. Roll mode
+Hold a slow key to charge the roll shot energy.
+The roll shot is fired when you release the key.
+
+. Lock mode
+While holding a slow key, you can shot the lock-on laser
+that aims an enemy in the front of your ship.
+
+The ship extends 200,000 and every 500,000 points.
+
+These options are available:
+ -brightness n Set the brightness of the screen.(n = 0 - 100, default = 100)
+ -luminous n Set the luminous intensity.(n = 0 - 100, default = 0)
+ -lowres Use the low resolution mode.
+ -nosound Stop the sound.
+ -window Launch the game in the window, not use the full-screen.
+ -reverse Reverse the shot key and the slow key.
+ -slowship Use the slow speed ship in all game modes.
+ -nowait Disable the intentional slowdown.
+
+
+- Comments
+
+If you have any comments, please mail to cs8k-cyu@asahi-net.or.jp
+
+
+- Webpage
+
+PARSEC47 webpage:
+http://www.asahi-net.or.jp/~cs8k-cyu/windows/p47_e.html
+
+
+- Acknowledgement
+
+PARSEC47 is written in the D Programming Language.
+ D Programming Language
+ http://www.digitalmars.com/d/index.html
+
+libBulletML is used to parse BulletML files.
+ libBulletML
+ http://user.ecc.u-tokyo.ac.jp/~s31552/wp/libbulletml/
+
+Simple DirectMedia Layer is used for the display handling.
+ Simple DirectMedia Layer
+ http://www.libsdl.org/
+
+SDL_mixer and Ogg Vorbis CODEC to play BGM/SE.
+ SDL_mixer 1.2
+ http://www.libsdl.org/projects/SDL_mixer/
+ Vorbis.com
+ http://www.vorbis.com/
+
+Using D Header files at DedicateD for OpgnGL and SDL, and
+at D - porting for SDL_mixer.
+ DedicateD
+ http://int19h.tamb.ru/files.html
+ D - porting
+ http://user.ecc.u-tokyo.ac.jp/~s31552/wp/d/porting.html
+
+Mersenne Twister to create the random number.
+ http://www.math.keio.ac.jp/matumoto/emt.html
+
+
+- History
+
+2004 1/ 1 ver. 0.2
+ Add the lock mode.
+ Adjust barrages.
+ Fix the bullets' disappearance bug.
+2003 12/21 ver. 0.13
+ Add the '-slowship' option.
+ A slow bullet disappears after a while.
+ Fix the screen resize bug.
+2003 12/ 5 ver. 0.12
+ Adjust the enemies' appearance position.
+ Adjust barrages.
+2003 11/30 ver. 0.11
+ Fix the incorrect line draw function.
+ Adjust the size of the field.
+ Adjust barrages.
+ The roll shot power weaken.
+2003 11/29 ver. 0.1
+
+
+-- License
+
+License
+-------
+
+Copyright 2003 Kenta Cho. All rights reserved.
+
+Redistribution and use in source and binary forms,
+with or without modification, are permitted provided that
+the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/ports/parsec47/parsec47/middle/2round.xml b/ports/parsec47/parsec47/middle/2round.xml
new file mode 100644
index 0000000000..dde94f0859
--- /dev/null
+++ b/ports/parsec47/parsec47/middle/2round.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+ 5
+
+
+ 59
+
+
+
+
+ $rank*4.4
+
+ 10+$rank*10
+ 6
+
+
+ 59
+
+
+
+
+
+
+ 40
+
+
+
+ 1.2
+
+
+
diff --git a/ports/parsec47/parsec47/middle/4way.xml b/ports/parsec47/parsec47/middle/4way.xml
new file mode 100644
index 0000000000..1bf3643298
--- /dev/null
+++ b/ports/parsec47/parsec47/middle/4way.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ 99
+
+
+ -32
+
+
+ 3
+
+
+ 20
+
+
+
+
+ 50-$rank*25
+
+
+
+
+
+ 1
+
+
+
diff --git a/ports/parsec47/parsec47/middle/double_roll_seeds.xml b/ports/parsec47/parsec47/middle/double_roll_seeds.xml
new file mode 100644
index 0000000000..9710cd460c
--- /dev/null
+++ b/ports/parsec47/parsec47/middle/double_roll_seeds.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+ -1
+
+
+
+
+
+ 0
+
+
+
+ 180
+
+
+ 99
+
+ 32-16*$rank
+
+ (15-$rank*8)*$1
+
+
+
+ 180
+
+
+
+
+
+
+
+ 1.2
+
+
+
diff --git a/ports/parsec47/parsec47/middle/dr1_boss_3.xml b/ports/parsec47/parsec47/middle/dr1_boss_3.xml
new file mode 100644
index 0000000000..aee3e9ff2e
--- /dev/null
+++ b/ports/parsec47/parsec47/middle/dr1_boss_3.xml
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+ 1.1
+ 0
+
+
+
+
+
+ 0.7
+ 14
+
+
+ 52
+
+
+
+0
+
+
+ $2
+ $1
+
+
+ 2+$rank*3.2
+
+ 16
+
+ 360/(2+$rank*3.2)
+ $1
+
+
+
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/middle/kr3_boss_fastspread.xml b/ports/parsec47/parsec47/middle/kr3_boss_fastspread.xml
new file mode 100644
index 0000000000..a9b95504e9
--- /dev/null
+++ b/ports/parsec47/parsec47/middle/kr3_boss_fastspread.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+ 1
+
+ 45
+
+ -1
+
+ 45
+
+
+
+
+ (-10)*$1
+ 1.0
+
+
+ 2+$rank*5.2
+
+
+ (36-$rank*12)*$1
+ -0.06
+
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/middle/nwroll.xml b/ports/parsec47/parsec47/middle/nwroll.xml
new file mode 100644
index 0000000000..ceb406fd9a
--- /dev/null
+++ b/ports/parsec47/parsec47/middle/nwroll.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ 99
+
+
+ 112
+
+
+ 42
+
+
+
+
+
+
+
+ 0
+
+
+ 1+$rank*4.2
+
+
+ 5
+
+
+
+
+
+
+
+
+
+ 0.8
+
+
+
diff --git a/ports/parsec47/parsec47/middle/roll2way.xml b/ports/parsec47/parsec47/middle/roll2way.xml
new file mode 100644
index 0000000000..c09cec4b22
--- /dev/null
+++ b/ports/parsec47/parsec47/middle/roll2way.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+ 99
+
+
+ 180-10
+
+
+
+ 180
+
+
+ 24-$rank*13
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/middle/roll4way.xml b/ports/parsec47/parsec47/middle/roll4way.xml
new file mode 100644
index 0000000000..7fe9924157
--- /dev/null
+++ b/ports/parsec47/parsec47/middle/roll4way.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+ 0
+
+
+ 3
+
+
+ 90
+
+
+
+
+ 99
+
+ 42-$rank*21
+
+ 90+(2+20*$rank)
+
+
+ 3
+
+
+ 90
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
diff --git a/ports/parsec47/parsec47/middle/shotgun.xml b/ports/parsec47/parsec47/middle/shotgun.xml
new file mode 100644
index 0000000000..213c2f135e
--- /dev/null
+++ b/ports/parsec47/parsec47/middle/shotgun.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+ 180
+
+
+ 90
+
+
+
+ 0.5
+
+
+ -50
+ 1
+
+
+
+ 2+$rank*4.7
+
+ 5-$rank*2
+
+ 25-$rank*3
+ 1
+
+
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/middle/spread_bf.xml b/ports/parsec47/parsec47/middle/spread_bf.xml
new file mode 100644
index 0000000000..a63866c456
--- /dev/null
+++ b/ports/parsec47/parsec47/middle/spread_bf.xml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+ 4+$rank*9.5
+ 120/(4+$rank*10.2)
+ 120/(-4-$rank*10.2)
+
+
+
+
+
+ 120
+
+
+ 99
+
+ $1
+
+ 20-$rank*9.5
+
+ $2
+
+
+
+
+ $1
+
+ 20-$rank*9.5
+
+ $3
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
diff --git a/ports/parsec47/parsec47/middlebackmove/up.xml b/ports/parsec47/parsec47/middlebackmove/up.xml
new file mode 100644
index 0000000000..8d8b94f4d7
--- /dev/null
+++ b/ports/parsec47/parsec47/middlebackmove/up.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+ 0.3
+ 1
+
+
+
+
diff --git a/ports/parsec47/parsec47/middlemove/back.xml b/ports/parsec47/parsec47/middlemove/back.xml
new file mode 100644
index 0000000000..72181c48ec
--- /dev/null
+++ b/ports/parsec47/parsec47/middlemove/back.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+ 0.4+$rand*0.3
+ 1
+
+50+$rand*30
+
+ 0
+ 60
+
+120+$rand*30
+
+ -0.3
+ 60
+
+
+
+
diff --git a/ports/parsec47/parsec47/middlemove/curve.xml b/ports/parsec47/parsec47/middlemove/curve.xml
new file mode 100644
index 0000000000..97479e07b6
--- /dev/null
+++ b/ports/parsec47/parsec47/middlemove/curve.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+ 50-$rand*100
+ 20
+
+
+ 0.3
+ 1
+
+
+
+
diff --git a/ports/parsec47/parsec47/middlemove/down.xml b/ports/parsec47/parsec47/middlemove/down.xml
new file mode 100644
index 0000000000..8d8b94f4d7
--- /dev/null
+++ b/ports/parsec47/parsec47/middlemove/down.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+ 0.3
+ 1
+
+
+
+
diff --git a/ports/parsec47/parsec47/middlemove/down_fast.xml b/ports/parsec47/parsec47/middlemove/down_fast.xml
new file mode 100644
index 0000000000..c9c76d73e3
--- /dev/null
+++ b/ports/parsec47/parsec47/middlemove/down_fast.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+ 0.4
+ 1
+
+
+
+
diff --git a/ports/parsec47/parsec47/middlemove/down_slow.xml b/ports/parsec47/parsec47/middlemove/down_slow.xml
new file mode 100644
index 0000000000..09076507f8
--- /dev/null
+++ b/ports/parsec47/parsec47/middlemove/down_slow.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+ 0.2
+ 1
+
+
+
+
diff --git a/ports/parsec47/parsec47/middlesub/shot.xml b/ports/parsec47/parsec47/middlesub/shot.xml
new file mode 100644
index 0000000000..70e1e4e935
--- /dev/null
+++ b/ports/parsec47/parsec47/middlesub/shot.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+ 1+$rank*3.4
+
+
+ 1
+
+
+ 20
+
+
+ 999
+
+
+
diff --git a/ports/parsec47/parsec47/middlesub_lock/shot.xml b/ports/parsec47/parsec47/middlesub_lock/shot.xml
new file mode 100644
index 0000000000..54fdf83525
--- /dev/null
+++ b/ports/parsec47/parsec47/middlesub_lock/shot.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+ 1+$rank*4.4
+
+
+ 1
+
+
+ 24-$rank*8
+
+
+ 999
+
+
+
diff --git a/ports/parsec47/parsec47/morph/248shot.xml b/ports/parsec47/parsec47/morph/248shot.xml
new file mode 100644
index 0000000000..7e57f7f8ff
--- /dev/null
+++ b/ports/parsec47/parsec47/morph/248shot.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+ 30
+ 0
+
+
+ $rank*2.2
+
+
+ 60
+ -0.1
+
+
+
+
+
+ -30
+ 0
+
+
+ $rank*2.2
+
+
+ -60
+ -0.1
+
+
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph/3way.xml b/ports/parsec47/parsec47/morph/3way.xml
new file mode 100644
index 0000000000..cd05b1b079
--- /dev/null
+++ b/ports/parsec47/parsec47/morph/3way.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+ -36
+ $rank*0.3
+
+
+
+ 36
+ $rank*0.3
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph/6gt.xml b/ports/parsec47/parsec47/morph/6gt.xml
new file mode 100644
index 0000000000..05fb54ee6c
--- /dev/null
+++ b/ports/parsec47/parsec47/morph/6gt.xml
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+ 1
+
+
+ 0
+ $rank
+
+ 120
+ 0.1
+
+
+
+
+
+ 0
+ $rank
+
+ 0
+ -0.2
+
+
+
+
+
+ 0
+ $rank
+
+ -120
+ 0.1
+
+
+
+
+
+
+
+
+
+ $1
+ 1
+
+ 2
+
+ 0-$1
+ 1
+
+ 1
+
+ 0
+ $2-$rank
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph/accel.xml b/ports/parsec47/parsec47/morph/accel.xml
new file mode 100644
index 0000000000..07fcef76a1
--- /dev/null
+++ b/ports/parsec47/parsec47/morph/accel.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+ 0
+ 0
+
+
+ $rank*2.8+1
+
+
+ 0
+ 0.12
+
+
+ 4
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph/bar.xml b/ports/parsec47/parsec47/morph/bar.xml
new file mode 100644
index 0000000000..9b71d86738
--- /dev/null
+++ b/ports/parsec47/parsec47/morph/bar.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+ 0
+ 0
+
+
+ 1+$rank*1.7
+
+
+ 0
+ 0.1+$rank*0.05
+
+
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph/divide.xml b/ports/parsec47/parsec47/morph/divide.xml
new file mode 100644
index 0000000000..5ef0ae0851
--- /dev/null
+++ b/ports/parsec47/parsec47/morph/divide.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+ 8+$rank*12
+ 0
+
+
+
+ -8-$rank*12
+ 0
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph/fire_slowshot.xml b/ports/parsec47/parsec47/morph/fire_slowshot.xml
new file mode 100644
index 0000000000..c90bc76b82
--- /dev/null
+++ b/ports/parsec47/parsec47/morph/fire_slowshot.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+ 4
+
+ ($rank*10+5)*$rand
+ -0.4
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph/kr1b_bit_shot.xml b/ports/parsec47/parsec47/morph/kr1b_bit_shot.xml
new file mode 100644
index 0000000000..2cb057d3bc
--- /dev/null
+++ b/ports/parsec47/parsec47/morph/kr1b_bit_shot.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+ 0
+ -0.9
+
+
+ $rank*2.7
+
+ 2
+
+ 0
+ 0.3
+
+
+
+
+
+
+
+
+
+ 8
+
+ 1
+ 60
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph/nway.xml b/ports/parsec47/parsec47/morph/nway.xml
new file mode 100644
index 0000000000..5d2c5fc60e
--- /dev/null
+++ b/ports/parsec47/parsec47/morph/nway.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+ 0
+ 0
+
+
+ $rank*3.2
+
+
+ 60
+ -0.1
+
+
+
+
+
+ -60
+ -0.1
+
+
+ $rank*3.2-1
+
+
+ -60
+ -0.1
+
+
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph/side_back_shot.xml b/ports/parsec47/parsec47/morph/side_back_shot.xml
new file mode 100644
index 0000000000..7f8be1220d
--- /dev/null
+++ b/ports/parsec47/parsec47/morph/side_back_shot.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+ 10+$rank*5
+
+ 135
+ 0
+
+
+
+ -135
+ 0
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph/sideway.xml b/ports/parsec47/parsec47/morph/sideway.xml
new file mode 100644
index 0000000000..50c87b98d3
--- /dev/null
+++ b/ports/parsec47/parsec47/morph/sideway.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+ 0
+ 0
+
+
+
+ 3.3
+
+
+
+
+
+ 1+$rank*1.7
+
+
+ $1
+ -0.08
+
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph/slowdown.xml b/ports/parsec47/parsec47/morph/slowdown.xml
new file mode 100644
index 0000000000..c28b1cfc3f
--- /dev/null
+++ b/ports/parsec47/parsec47/morph/slowdown.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+ -0.7
+ 6+$rank*4
+
+ 6+$rank*4
+
+ 0.7+$rank*0.3
+ 7
+
+ 7
+
+ 0
+ 0
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph/spread.xml b/ports/parsec47/parsec47/morph/spread.xml
new file mode 100644
index 0000000000..e9ddebd34a
--- /dev/null
+++ b/ports/parsec47/parsec47/morph/spread.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+ 0
+ -0.2
+
+
+ 1+$rank*1.6
+
+
+ 76-$rank*26
+ 0.2
+
+
+
+
+
+ -76+$rank*26
+ 0
+
+
+ $rank*1.6
+
+
+ -76+$rank*26
+ 0.2
+
+
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph/twin.xml b/ports/parsec47/parsec47/morph/twin.xml
new file mode 100644
index 0000000000..190a4ca781
--- /dev/null
+++ b/ports/parsec47/parsec47/morph/twin.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+ 1
+
+
+ 0
+ $rank
+
+ 90
+
+
+
+
+
+ 0
+ $rank
+
+ -90
+
+
+
+
+
+
+
+
+
+ $1
+ 1
+
+ 2
+
+ 0-$1
+ 1
+
+ 1
+
+ 0
+ -$rank
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph/wide.xml b/ports/parsec47/parsec47/morph/wide.xml
new file mode 100644
index 0000000000..038e64600b
--- /dev/null
+++ b/ports/parsec47/parsec47/morph/wide.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+ 0
+ 0
+
+
+
+ 1+$rank
+ 0
+
+
+
+ -1-$rank
+ 0
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph_lock/248shot.xml b/ports/parsec47/parsec47/morph_lock/248shot.xml
new file mode 100644
index 0000000000..648bb9a0de
--- /dev/null
+++ b/ports/parsec47/parsec47/morph_lock/248shot.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+ 0
+ 0
+
+
+ 1+$rank*1.7
+
+
+ 90
+ -0.1
+
+
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph_lock/3way.xml b/ports/parsec47/parsec47/morph_lock/3way.xml
new file mode 100644
index 0000000000..69f6ccb127
--- /dev/null
+++ b/ports/parsec47/parsec47/morph_lock/3way.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+ -90+$rank*20
+ $rank*0.3
+
+
+
+ 90-$rank*20
+ $rank*0.3
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph_lock/6gt.xml b/ports/parsec47/parsec47/morph_lock/6gt.xml
new file mode 100644
index 0000000000..37f4d3a638
--- /dev/null
+++ b/ports/parsec47/parsec47/morph_lock/6gt.xml
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+ 1
+
+
+ 0
+ $rank
+
+ 120
+ 0.08
+
+
+
+
+
+ 0
+ $rank
+
+ 0
+ -0.08
+
+
+
+
+
+ 0
+ $rank
+
+ -120
+ 0.08
+
+
+
+
+
+
+
+
+
+ $1
+ 1
+
+ 1
+
+ 0-$1
+ 1
+
+ 1
+
+ 0
+ $2-$rank
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph_lock/accel.xml b/ports/parsec47/parsec47/morph_lock/accel.xml
new file mode 100644
index 0000000000..cede5d4f25
--- /dev/null
+++ b/ports/parsec47/parsec47/morph_lock/accel.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+ 0
+ 0
+
+
+ $rank*1.8+1
+
+
+ 0
+ 0.11
+
+
+ 4
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph_lock/bar.xml b/ports/parsec47/parsec47/morph_lock/bar.xml
new file mode 100644
index 0000000000..a4ccbd53d5
--- /dev/null
+++ b/ports/parsec47/parsec47/morph_lock/bar.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+ 0
+ 0
+
+
+ $rank*1.7
+
+
+ 0
+ 0.08+$rank*0.05
+
+
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph_lock/divide.xml b/ports/parsec47/parsec47/morph_lock/divide.xml
new file mode 100644
index 0000000000..14ccb9a849
--- /dev/null
+++ b/ports/parsec47/parsec47/morph_lock/divide.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+ 64-$rank*10
+ -0.1
+
+
+
+ -64+$rank*10
+ -0.1
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph_lock/fire_slowshot.xml b/ports/parsec47/parsec47/morph_lock/fire_slowshot.xml
new file mode 100644
index 0000000000..487387ac36
--- /dev/null
+++ b/ports/parsec47/parsec47/morph_lock/fire_slowshot.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+ 4
+
+ ($rank*4+2)*$rand
+ -0.3
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph_lock/kr1b_bit_shot.xml b/ports/parsec47/parsec47/morph_lock/kr1b_bit_shot.xml
new file mode 100644
index 0000000000..577b642527
--- /dev/null
+++ b/ports/parsec47/parsec47/morph_lock/kr1b_bit_shot.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+ 0
+ -0.9
+
+
+ $rank*1.7
+
+ 2
+
+ 0
+ 0.3
+
+
+
+
+
+
+
+
+
+ 8
+
+ 1
+ 60
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph_lock/nway.xml b/ports/parsec47/parsec47/morph_lock/nway.xml
new file mode 100644
index 0000000000..5d2c5fc60e
--- /dev/null
+++ b/ports/parsec47/parsec47/morph_lock/nway.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+ 0
+ 0
+
+
+ $rank*3.2
+
+
+ 60
+ -0.1
+
+
+
+
+
+ -60
+ -0.1
+
+
+ $rank*3.2-1
+
+
+ -60
+ -0.1
+
+
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph_lock/side_back_shot.xml b/ports/parsec47/parsec47/morph_lock/side_back_shot.xml
new file mode 100644
index 0000000000..7f8be1220d
--- /dev/null
+++ b/ports/parsec47/parsec47/morph_lock/side_back_shot.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+ 10+$rank*5
+
+ 135
+ 0
+
+
+
+ -135
+ 0
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph_lock/sideway.xml b/ports/parsec47/parsec47/morph_lock/sideway.xml
new file mode 100644
index 0000000000..b20a623b36
--- /dev/null
+++ b/ports/parsec47/parsec47/morph_lock/sideway.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+ 0
+ 0
+
+
+
+ 1
+
+
+
+
+
+ 1+$rank*1.7
+
+
+ $1
+ -0.08
+
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph_lock/slowdown.xml b/ports/parsec47/parsec47/morph_lock/slowdown.xml
new file mode 100644
index 0000000000..a79f444669
--- /dev/null
+++ b/ports/parsec47/parsec47/morph_lock/slowdown.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+ -0.7
+ 7+$rank*5
+
+ 7+$rank*5
+
+ 0.7+$rank*0.3
+ 8
+
+ 8
+
+ 0
+ 0
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph_lock/spread.xml b/ports/parsec47/parsec47/morph_lock/spread.xml
new file mode 100644
index 0000000000..ec5f2e2b4d
--- /dev/null
+++ b/ports/parsec47/parsec47/morph_lock/spread.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+ 0
+ -0.2
+
+
+ 1+$rank*1.6
+
+
+ 90-$rank*26
+ 0.2
+
+
+
+
+
+ -90+$rank*26
+ 0
+
+
+ $rank*1.6
+
+
+ -90+$rank*26
+ 0.2
+
+
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph_lock/twin.xml b/ports/parsec47/parsec47/morph_lock/twin.xml
new file mode 100644
index 0000000000..a37aababb1
--- /dev/null
+++ b/ports/parsec47/parsec47/morph_lock/twin.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+ 1
+
+
+ 0
+ $rank
+
+ 90
+
+
+
+
+
+ 0
+ $rank
+
+ -90
+
+
+
+
+
+
+
+
+
+ $1
+ 1
+
+ 1
+
+ 0-$1
+ 1
+
+ 1
+
+ 0
+ -$rank
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/morph_lock/wide.xml b/ports/parsec47/parsec47/morph_lock/wide.xml
new file mode 100644
index 0000000000..7f6f6ee133
--- /dev/null
+++ b/ports/parsec47/parsec47/morph_lock/wide.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+ 0
+ 0
+
+
+
+ 1+$rank*0.6
+ 0
+
+
+
+ -1-$rank*0.6
+ 0
+
+
+
+
+
+
diff --git a/ports/parsec47/parsec47/p47.prf b/ports/parsec47/parsec47/p47.prf
new file mode 100644
index 0000000000..68a808f3ed
Binary files /dev/null and b/ports/parsec47/parsec47/p47.prf differ
diff --git a/ports/parsec47/parsec47/readme_e.txt b/ports/parsec47/parsec47/readme_e.txt
new file mode 100644
index 0000000000..25440803f9
--- /dev/null
+++ b/ports/parsec47/parsec47/readme_e.txt
@@ -0,0 +1,147 @@
+PARSEC47 readme_e.txt
+for Windows98/2000/XP(OpenGL required)
+ver. 0.2
+(C) Kenta Cho
+
+Defeat retro enemies modenly.
+Retromodern hispeed shmup, 'PARSEC47'.
+
+
+- How to install.
+
+Unpack p47_0_2.zip, and execute 'p47.exe'.
+(If the game is too heavy for your PC, please try 'p47_lowres.bat'.
+ This batch file launches the game in the low resolution mode.)
+
+
+- How to play.
+
+ - Movement Arrow/Num key / Joystick
+ - Shot [Z][L-Ctrl] / Trigger 1, 4, 5, 8
+ - Slow / Roll, Lock [X][L-Alt][L-Shift] / Trigger 2, 3, 6, 7
+ - Pause [P]
+
+Select the stage by a keyboard or a joystick.
+Press a shot key to start the game.
+All stages are endless and created randomly each time.
+The game continues until you lose all ships.
+
+Control your ship and destroy enemies.
+While holding a slow key, the ship becomes slow.
+
+You can also select the game mode from 2 types.
+Press a slow key in the title screen to change the game mode.
+Each mode has a different barrage pattern.
+
+. Roll mode
+Hold a slow key to charge the roll shot energy.
+The roll shot is fired when you release the key.
+
+. Lock mode
+While holding a slow key, you can shot the lock-on laser
+that aims an enemy in the front of your ship.
+
+The ship extends 200,000 and every 500,000 points.
+
+These options are available:
+ -brightness n Set the brightness of the screen.(n = 0 - 100, default = 100)
+ -luminous n Set the luminous intensity.(n = 0 - 100, default = 0)
+ -lowres Use the low resolution mode.
+ -nosound Stop the sound.
+ -window Launch the game in the window, not use the full-screen.
+ -reverse Reverse the shot key and the slow key.
+ -slowship Use the slow speed ship in all game modes.
+ -nowait Disable the intentional slowdown.
+
+
+- Comments
+
+If you have any comments, please mail to cs8k-cyu@asahi-net.or.jp
+
+
+- Webpage
+
+PARSEC47 webpage:
+http://www.asahi-net.or.jp/~cs8k-cyu/windows/p47_e.html
+
+
+- Acknowledgement
+
+PARSEC47 is written in the D Programming Language.
+ D Programming Language
+ http://www.digitalmars.com/d/index.html
+
+libBulletML is used to parse BulletML files.
+ libBulletML
+ http://user.ecc.u-tokyo.ac.jp/~s31552/wp/libbulletml/
+
+Simple DirectMedia Layer is used for the display handling.
+ Simple DirectMedia Layer
+ http://www.libsdl.org/
+
+SDL_mixer and Ogg Vorbis CODEC to play BGM/SE.
+ SDL_mixer 1.2
+ http://www.libsdl.org/projects/SDL_mixer/
+ Vorbis.com
+ http://www.vorbis.com/
+
+Using D Header files at DedicateD for OpgnGL and SDL, and
+at D - porting for SDL_mixer.
+ DedicateD
+ http://int19h.tamb.ru/files.html
+ D - porting
+ http://user.ecc.u-tokyo.ac.jp/~s31552/wp/d/porting.html
+
+Mersenne Twister to create the random number.
+ http://www.math.keio.ac.jp/matumoto/emt.html
+
+
+- History
+
+2004 1/ 1 ver. 0.2
+ Add the lock mode.
+ Adjust barrages.
+ Fix the bullets' disappearance bug.
+2003 12/21 ver. 0.13
+ Add the '-slowship' option.
+ A slow bullet disappears after a while.
+ Fix the screen resize bug.
+2003 12/ 5 ver. 0.12
+ Adjust the enemies' appearance position.
+ Adjust barrages.
+2003 11/30 ver. 0.11
+ Fix the incorrect line draw function.
+ Adjust the size of the field.
+ Adjust barrages.
+ The roll shot power weaken.
+2003 11/29 ver. 0.1
+
+
+-- License
+
+License
+-------
+
+Copyright 2003 Kenta Cho. All rights reserved.
+
+Redistribution and use in source and binary forms,
+with or without modification, are permitted provided that
+the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/ports/parsec47/parsec47/small/shot.xml b/ports/parsec47/parsec47/small/shot.xml
new file mode 100644
index 0000000000..6693a20e80
--- /dev/null
+++ b/ports/parsec47/parsec47/small/shot.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+ 60-$rank*60
+
+ 1
+
+
+ 120-$rank*80
+
+
+
diff --git a/ports/parsec47/parsec47/small_lock/shot.xml b/ports/parsec47/parsec47/small_lock/shot.xml
new file mode 100644
index 0000000000..8f887f140b
--- /dev/null
+++ b/ports/parsec47/parsec47/small_lock/shot.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+ 30-$rank*30
+
+ 1
+
+
+ 40-$rank*26
+
+
+
diff --git a/ports/parsec47/parsec47/smallmove/248shot.xml b/ports/parsec47/parsec47/smallmove/248shot.xml
new file mode 100644
index 0000000000..88d855461d
--- /dev/null
+++ b/ports/parsec47/parsec47/smallmove/248shot.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+ $rand*1.0-0.5
+
+
+
+
+
+ $1
+ 2.0
+ 20
+
+ 40
+
+ -2.0
+ 50
+
+ 10
+
+ 0-$1*2
+ 60
+
+
+
+
diff --git a/ports/parsec47/parsec47/smallmove/3waychase.xml b/ports/parsec47/parsec47/smallmove/3waychase.xml
new file mode 100644
index 0000000000..a97229340a
--- /dev/null
+++ b/ports/parsec47/parsec47/smallmove/3waychase.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+ 0.5
+ 1
+
+ 8
+
+ 0
+ 32
+
+
+
+
diff --git a/ports/parsec47/parsec47/smallmove/6gt.xml b/ports/parsec47/parsec47/smallmove/6gt.xml
new file mode 100644
index 0000000000..e60e7ed818
--- /dev/null
+++ b/ports/parsec47/parsec47/smallmove/6gt.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+ $rand*40+160
+ 1
+
+
+ 0.8
+ 1
+
+ 30+$rand*10
+
+ 0
+ 80
+
+ 180
+
+ -1.5
+ 90
+
+
+
+
diff --git a/ports/parsec47/parsec47/smallmove/accel.xml b/ports/parsec47/parsec47/smallmove/accel.xml
new file mode 100644
index 0000000000..e11d5a259a
--- /dev/null
+++ b/ports/parsec47/parsec47/smallmove/accel.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+ 0.5
+ 1
+
+ 32
+
+ 0
+ 32
+
+ 32
+
+ 0
+ 48
+
+ 32
+
+ 0.7
+ 32
+
+
+
+
diff --git a/ports/parsec47/parsec47/smallmove/accum.xml b/ports/parsec47/parsec47/smallmove/accum.xml
new file mode 100644
index 0000000000..73d64b3246
--- /dev/null
+++ b/ports/parsec47/parsec47/smallmove/accum.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+ 1.2
+ 1
+
+ 60
+
+ 80-$rand*160
+ 30
+
+
+
+
diff --git a/ports/parsec47/parsec47/smallmove/bar.xml b/ports/parsec47/parsec47/smallmove/bar.xml
new file mode 100644
index 0000000000..7f74ce27dd
--- /dev/null
+++ b/ports/parsec47/parsec47/smallmove/bar.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+ 0.5
+ 1
+
+ 8
+
+ $rand*0.2-0.1
+ 8
+
+
+
+
diff --git a/ports/parsec47/parsec47/smallmove/bit_move.xml b/ports/parsec47/parsec47/smallmove/bit_move.xml
new file mode 100644
index 0000000000..a45132f09d
--- /dev/null
+++ b/ports/parsec47/parsec47/smallmove/bit_move.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+ 180
+ 1
+
+
+1.5
+1
+
+30
+
+4
+
+
+$rand*360
+10
+
+
+1
+15
+
+10+$rand*30
+
+0
+10
+
+20+$rand*40
+
+
+
+ 0
+ 32
+
+
+1
+15
+
+
+
+
diff --git a/ports/parsec47/parsec47/smallmove/ikr5_vrp.xml b/ports/parsec47/parsec47/smallmove/ikr5_vrp.xml
new file mode 100644
index 0000000000..19ad47eacd
--- /dev/null
+++ b/ports/parsec47/parsec47/smallmove/ikr5_vrp.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+ $rand*1.0-0.5
+ 2+$rand
+ 1
+
+ 30
+
+ -2
+ 80
+
+
+
+
diff --git a/ports/parsec47/parsec47/smallmove/kr1_boss_bit.xml b/ports/parsec47/parsec47/smallmove/kr1_boss_bit.xml
new file mode 100644
index 0000000000..59dac0692e
--- /dev/null
+++ b/ports/parsec47/parsec47/smallmove/kr1_boss_bit.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+ 1
+ 60
+
+
+ 0
+ 120
+
+
+
+
diff --git a/ports/parsec47/parsec47/smallmove/nway.xml b/ports/parsec47/parsec47/smallmove/nway.xml
new file mode 100644
index 0000000000..a0274f6ce1
--- /dev/null
+++ b/ports/parsec47/parsec47/smallmove/nway.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+ 1.5
+ 1
+
+ 1
+
+ 0
+ 120
+
+ 180
+
+ -0.8
+ 90
+
+
+
+
diff --git a/ports/parsec47/parsec47/smallmove/rndway.xml b/ports/parsec47/parsec47/smallmove/rndway.xml
new file mode 100644
index 0000000000..250ec29402
--- /dev/null
+++ b/ports/parsec47/parsec47/smallmove/rndway.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+ 0.7
+ 1
+
+ 24
+
+ $rand*90-45
+ 24
+
+
+
+
diff --git a/ports/parsec47/parsec47/smallmove/slowdown.xml b/ports/parsec47/parsec47/smallmove/slowdown.xml
new file mode 100644
index 0000000000..24db6a8a24
--- /dev/null
+++ b/ports/parsec47/parsec47/smallmove/slowdown.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+ 3
+ 1
+
+
+ 165+$rand*30
+ 1
+
+ 1
+
+ 0
+ 50
+
+ 100
+
+ -0.5
+ 90
+
+
+
+
diff --git a/ports/parsec47/parsec47/smallmove/spread.xml b/ports/parsec47/parsec47/smallmove/spread.xml
new file mode 100644
index 0000000000..19925cd735
--- /dev/null
+++ b/ports/parsec47/parsec47/smallmove/spread.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+ 1.2+$rand*0.5
+ 1
+
+ 20
+
+ -0.3
+ 48
+
+
+
+
diff --git a/ports/parsec47/parsec47/smallmove/twin.xml b/ports/parsec47/parsec47/smallmove/twin.xml
new file mode 100644
index 0000000000..79d423c35b
--- /dev/null
+++ b/ports/parsec47/parsec47/smallmove/twin.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+ 120+$rand*120
+ 1
+
+
+ 0.8
+ 1
+
+ 1
+
+
+
diff --git a/ports/parsec47/parsec47/smallmove/twin_extend.xml b/ports/parsec47/parsec47/smallmove/twin_extend.xml
new file mode 100644
index 0000000000..c016561b1b
--- /dev/null
+++ b/ports/parsec47/parsec47/smallmove/twin_extend.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+120+$rand*120
+90
+
+
+0.8
+1
+
+1
+
+
+
diff --git a/ports/parsec47/parsec47/smallsidemove/3waychase.xml b/ports/parsec47/parsec47/smallsidemove/3waychase.xml
new file mode 100644
index 0000000000..a97229340a
--- /dev/null
+++ b/ports/parsec47/parsec47/smallsidemove/3waychase.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+ 0.5
+ 1
+
+ 8
+
+ 0
+ 32
+
+
+
+
diff --git a/ports/parsec47/parsec47/smallsidemove/downaccel.xml b/ports/parsec47/parsec47/smallsidemove/downaccel.xml
new file mode 100644
index 0000000000..77b349ad8d
--- /dev/null
+++ b/ports/parsec47/parsec47/smallsidemove/downaccel.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+ 0.3+$rand*0.4
+ 1
+
+ 30
+
+ 2
+ 60
+
+
+
+
diff --git a/ports/parsec47/parsec47/smallsidemove/straight.xml b/ports/parsec47/parsec47/smallsidemove/straight.xml
new file mode 100644
index 0000000000..25044f0288
--- /dev/null
+++ b/ports/parsec47/parsec47/smallsidemove/straight.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+ 0.5
+ 1
+
+
+
+
diff --git a/ports/parsec47/parsec47/smallsidemove/upaccel.xml b/ports/parsec47/parsec47/smallsidemove/upaccel.xml
new file mode 100644
index 0000000000..2678c8a2e5
--- /dev/null
+++ b/ports/parsec47/parsec47/smallsidemove/upaccel.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+ 0.6+$rand*1.2
+ 1
+
+ 5
+
+ 0.1
+ 40
+
+ 60
+
+ -2
+ 60
+
+
+
+
diff --git a/ports/parsec47/parsec47/sounds/bossdst.wav b/ports/parsec47/parsec47/sounds/bossdst.wav
new file mode 100644
index 0000000000..18045ea7bf
Binary files /dev/null and b/ports/parsec47/parsec47/sounds/bossdst.wav differ
diff --git a/ports/parsec47/parsec47/sounds/enemydst.wav b/ports/parsec47/parsec47/sounds/enemydst.wav
new file mode 100644
index 0000000000..bc46d95975
Binary files /dev/null and b/ports/parsec47/parsec47/sounds/enemydst.wav differ
diff --git a/ports/parsec47/parsec47/sounds/extend.wav b/ports/parsec47/parsec47/sounds/extend.wav
new file mode 100644
index 0000000000..e547bb66da
Binary files /dev/null and b/ports/parsec47/parsec47/sounds/extend.wav differ
diff --git a/ports/parsec47/parsec47/sounds/getbonus.wav b/ports/parsec47/parsec47/sounds/getbonus.wav
new file mode 100644
index 0000000000..fe94bcabde
Binary files /dev/null and b/ports/parsec47/parsec47/sounds/getbonus.wav differ
diff --git a/ports/parsec47/parsec47/sounds/largedst.wav b/ports/parsec47/parsec47/sounds/largedst.wav
new file mode 100644
index 0000000000..b70538e4d2
Binary files /dev/null and b/ports/parsec47/parsec47/sounds/largedst.wav differ
diff --git a/ports/parsec47/parsec47/sounds/laser.wav b/ports/parsec47/parsec47/sounds/laser.wav
new file mode 100644
index 0000000000..e75470c533
Binary files /dev/null and b/ports/parsec47/parsec47/sounds/laser.wav differ
diff --git a/ports/parsec47/parsec47/sounds/lock.wav b/ports/parsec47/parsec47/sounds/lock.wav
new file mode 100644
index 0000000000..bd8088dad6
Binary files /dev/null and b/ports/parsec47/parsec47/sounds/lock.wav differ
diff --git a/ports/parsec47/parsec47/sounds/ptn0.ogg b/ports/parsec47/parsec47/sounds/ptn0.ogg
new file mode 100644
index 0000000000..933f8b6a61
Binary files /dev/null and b/ports/parsec47/parsec47/sounds/ptn0.ogg differ
diff --git a/ports/parsec47/parsec47/sounds/ptn1.ogg b/ports/parsec47/parsec47/sounds/ptn1.ogg
new file mode 100644
index 0000000000..c5b967b1f7
Binary files /dev/null and b/ports/parsec47/parsec47/sounds/ptn1.ogg differ
diff --git a/ports/parsec47/parsec47/sounds/ptn2.ogg b/ports/parsec47/parsec47/sounds/ptn2.ogg
new file mode 100644
index 0000000000..9858080133
Binary files /dev/null and b/ports/parsec47/parsec47/sounds/ptn2.ogg differ
diff --git a/ports/parsec47/parsec47/sounds/ptn3.ogg b/ports/parsec47/parsec47/sounds/ptn3.ogg
new file mode 100644
index 0000000000..78e173f9df
Binary files /dev/null and b/ports/parsec47/parsec47/sounds/ptn3.ogg differ
diff --git a/ports/parsec47/parsec47/sounds/rollchg.wav b/ports/parsec47/parsec47/sounds/rollchg.wav
new file mode 100644
index 0000000000..50f8584c74
Binary files /dev/null and b/ports/parsec47/parsec47/sounds/rollchg.wav differ
diff --git a/ports/parsec47/parsec47/sounds/rollrls.wav b/ports/parsec47/parsec47/sounds/rollrls.wav
new file mode 100644
index 0000000000..dceb69ac7b
Binary files /dev/null and b/ports/parsec47/parsec47/sounds/rollrls.wav differ
diff --git a/ports/parsec47/parsec47/sounds/shipdst.wav b/ports/parsec47/parsec47/sounds/shipdst.wav
new file mode 100644
index 0000000000..a496862ed7
Binary files /dev/null and b/ports/parsec47/parsec47/sounds/shipdst.wav differ
diff --git a/ports/parsec47/parsec47/sounds/shot.wav b/ports/parsec47/parsec47/sounds/shot.wav
new file mode 100644
index 0000000000..2e393c9fee
Binary files /dev/null and b/ports/parsec47/parsec47/sounds/shot.wav differ
diff --git a/ports/parsec47/port.json b/ports/parsec47/port.json
new file mode 100644
index 0000000000..ca84717e0c
--- /dev/null
+++ b/ports/parsec47/port.json
@@ -0,0 +1,32 @@
+{
+ "version": 3,
+ "name": "parsec47.zip",
+ "items": [
+ "PARSEC47.sh",
+ "parsec47"
+ ],
+ "items_opt": [],
+ "attr": {
+ "title": "PARSEC47",
+ "porter": [
+ "Cebion"
+ ],
+ "desc": "PARSEC47 is a retromodern hi-speed shoot 'em up where you get to defeat retro enemies modernly. The player must destroy enemies while avoiding their projectiles and collecting green clusters of boxes for points.",
+ "desc_md": null,
+ "inst": "Select the stage by a keyboard or a joystick.\nPress a shot key to start the game.\nAll stages are endless and created randomly each time.\nThe game continues until you lose all ships.\n\nControl your ship and destroy enemies.\nWhile holding a slow key, the ship becomes slow.",
+ "inst_md": null,
+ "genres": [
+ "action",
+ "arcade"
+ ],
+ "image": null,
+ "rtr": true,
+ "exp": false,
+ "runtime": null,
+ "reqs": [],
+ "arch": [
+ "aarch64"
+ ],
+ "min_glibc": ""
+ }
+}
\ No newline at end of file
diff --git a/ports/parsec47/screenshot.png b/ports/parsec47/screenshot.png
new file mode 100644
index 0000000000..20ac0d0de3
Binary files /dev/null and b/ports/parsec47/screenshot.png differ