diff --git a/README.md b/README.md index 2e4025d..0d17020 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,27 @@ -# nes4j - -![Build status](https://github.com/GZYangKui/nes4j/actions/workflows/maven.yml/badge.svg) -![Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-blue) +
+ Nes4j logo +

Nes4j

+

Nintendo red and white simulator

+
+ +
+

+ English Document +

+

+ github repository +

+ Build status + Apache 2.0 + I18n support
+
-![nes4j](https://github.com/GZYangKui/nes4j-example/blob/master/video/32328_1673422550.gif?raw=true) +![nes4j](SNAPSHOTS/Main.png) +![DuckTables](SNAPSHOTS/DuckTables.png) +![Super Mario](SNAPSHOTS/Super%20Mario.png) ## Project introduction **nes4j**The Nintendo Red and White Machine Simulator is implemented in Java language, mainly diff --git a/README_zh.md b/README_zh.md index b89f43e..abe749f 100644 --- a/README_zh.md +++ b/README_zh.md @@ -2,8 +2,6 @@ Nes4j logo

Nes4j

任天堂红白机模拟器

-![Build status](https://github.com/GZYangKui/nes4j/actions/workflows/maven.yml/badge.svg) -![Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-blue)
@@ -13,12 +11,17 @@

github仓库

+ Build status + Apache 2.0 + I18n support +
-
![nes4j](SNAPSHOTS/Main.png) +![DuckTables](SNAPSHOTS/DuckTables.png) +![Super Mario](SNAPSHOTS/Super%20Mario.png) ## 项目介绍 diff --git a/SNAPSHOTS/Main.png b/SNAPSHOTS/Main.png new file mode 100644 index 0000000..b46676d Binary files /dev/null and b/SNAPSHOTS/Main.png differ diff --git a/app/src/main/java/cn/navclub/nes4j/app/Launcher.java b/app/src/main/java/cn/navclub/nes4j/app/Launcher.java index 560e183..7ffdf38 100644 --- a/app/src/main/java/cn/navclub/nes4j/app/Launcher.java +++ b/app/src/main/java/cn/navclub/nes4j/app/Launcher.java @@ -2,18 +2,20 @@ import cn.navclub.nes4j.app.config.NESConfig; import cn.navclub.nes4j.app.util.JsonUtil; +import cn.navclub.nes4j.app.util.OSUtil; import cn.navclub.nes4j.app.util.StrUtil; import cn.navclub.nes4j.bin.logging.LoggerFactory; import cn.navclub.nes4j.bin.logging.LoggerDelegate; import javafx.application.Application; +import java.io.File; import java.nio.file.Files; import java.nio.file.Path; public class Launcher { private static final LoggerDelegate log = LoggerFactory.logger(Launcher.class); - private static final String DEFAULT_CONFIG_PATH = "config/config.json"; + private static final String DEFAULT_CONFIG_PATH = OSUtil.workstation() + "config.json"; public static void main(String[] args) throws Exception { //Register global catch thread exception @@ -27,9 +29,9 @@ public static void main(String[] args) throws Exception { /** - * 加载本地配置文件 + * Load test environment config * - * @param args 程序启动参数 + * @param args Program args */ protected static NESConfig loadLocalConfig(String[] args) throws Exception { var map = StrUtil.args2Map(args); diff --git a/app/src/main/java/cn/navclub/nes4j/app/util/OSUtil.java b/app/src/main/java/cn/navclub/nes4j/app/util/OSUtil.java index 5e437a2..8187567 100644 --- a/app/src/main/java/cn/navclub/nes4j/app/util/OSUtil.java +++ b/app/src/main/java/cn/navclub/nes4j/app/util/OSUtil.java @@ -38,27 +38,37 @@ public static String userHome(String subdir) { return String.format("%s%s", path, subdir); } - public static Path workstation() { - var file = new File(userHome("nes4j")); + public static String workstation() { + return workstation(null); + } + + public static String workstation(String subdir) { + final File file; + if (StrUtil.isNotBlank(subdir)) { + file = new File(String.format("%s%s%s", userHome("nes4j"), File.separator, subdir)); + } else { + file = new File(userHome("nes4j")); + } if (!file.exists()) { - var ok = file.mkdir(); + var ok = file.mkdirs(); if (!ok) { log.warning("Create work path:{} fail.", file.getAbsolutePath()); } } - return file.toPath(); + return file.getAbsolutePath() + File.separator; } public static Optional mkdirAssort(String assort) { - var path = workstation(); - var str = String.format("%s%s%s", path, File.separator, assort); + var path = workstation("rom"); + var str = String.format("%s%s", path, assort); var file = new File(str); var ok = file.mkdir(); if (log.isDebugEnabled()) { if (!ok) { file = null; } - log.debug("Create target assort:{} result:{}", assort, ok); + assert file != null; + log.debug("Create target assort:{} result:{}", file.getAbsolutePath(), ok); } return Optional.ofNullable(file); } diff --git a/app/src/main/java/cn/navclub/nes4j/app/view/GameHall.java b/app/src/main/java/cn/navclub/nes4j/app/view/GameHall.java index 332e1e3..49087d1 100644 --- a/app/src/main/java/cn/navclub/nes4j/app/view/GameHall.java +++ b/app/src/main/java/cn/navclub/nes4j/app/view/GameHall.java @@ -71,7 +71,7 @@ public void preExecute() { @Override @SuppressWarnings("all") public List execute(Object... params) { - var path = Path.of(OSUtil.workstation().toString(), params[0].toString()); + var path = Path.of(OSUtil.workstation("rom"), params[0].toString()); var file = path.toFile(); if (!file.exists() || file.listFiles() == null) { return List.of(); @@ -126,7 +126,7 @@ private boolean requestRun(Message message) { } private void loadAssort() { - var file = OSUtil.workstation().toFile(); + var file = new File(OSUtil.workstation("rom")); var list = file.listFiles(); if (list == null) { return; @@ -144,7 +144,7 @@ private void loadAssort() { * otherwise visit github.

*/ @FXML - public void github() { + public void repository() { final String uri; var tid = TimeZone.getDefault().getID(); if (tid.toLowerCase().contains("shanghai")) { diff --git a/app/src/main/resources/cn/navclub/nes4j/app/assets/fxml/GameHall.fxml b/app/src/main/resources/cn/navclub/nes4j/app/assets/fxml/GameHall.fxml index f88e80b..a1f44c9 100644 --- a/app/src/main/resources/cn/navclub/nes4j/app/assets/fxml/GameHall.fxml +++ b/app/src/main/resources/cn/navclub/nes4j/app/assets/fxml/GameHall.fxml @@ -64,7 +64,7 @@