小编Asy*_*syx的帖子

硬件仿真的正确实现是什么?

我将编写一个Game Boy模拟器(Z80是CPU,以防有人不熟悉它),而在进行研究时,我发现有些不确定的东西。

第一个是C是在这里选择的编程语言。这并不是什么大问题,但我想听听您今天的观点。不推荐使用C ++。

我发现的第二件事是每个人每个操作码都使用一个函数。这似乎是合乎逻辑的,因为它只是一个函数调用,而且可能比对“ ADD”指令具有一个函数的优化效果更好,然后您必须找出此处使用的寄存器。但是今天那有什么必要呢?是我应该坚持还是要改写我的模拟器,如果我发现另一种可能更方便的方式只是没有切合(现在或多或少会出现现代游戏机)?

同样,重复编写“将寄存器添加到此寄存器”的功能也是一种动力。有没有一种方法可以从操作码映射或类似的东西中自动执行此操作?

c optimization emulation

2
推荐指数
1
解决办法
2219
查看次数

无法使用 Graphics2D 渲染 unicode 字符,即使字体支持这些字符

我尝试将文本渲染到 BufferedImage,效果非常好,但我无法渲染任何非 ASCII 字符(至少据我所知)。我所能找到的只是因为字体的原因,所以我下载了谷歌的“Noto”字体,它似乎支持几乎所有脚本,但我仍然得到了这些框。

\n\n

我什至不想渲染一些特别异国情调的东西。仅德语变音符号和升号 s (\xc3\x84\xc3\xa4 \xc3\x96\xc3\xb6 \xc3\x9c\xc3\xbc \xc3\x9f)。

\n\n

我创建这样的字体

\n\n
Font font = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream("NotoSans-Regular.ttf")).deriveFont(12f);\n
Run Code Online (Sandbox Code Playgroud)\n\n

并像这样渲染整个事情

\n\n
Graphics2D g2 = image.createGraphics();\ng2.setFont(font);\ng2.setColor(Color.white);\ng2.drawString(string, 0, g2.getFontMetrics().getAscent());\ng2.dispose();\n
Run Code Online (Sandbox Code Playgroud)\n\n

它适用于 ASCII。

\n\n

谷歌要么引导我找到非常简单的教程(这实际上是我目前得到的代码),要么说问题出在字体上,但事实并非如此,因为它在编辑器中运行得很好。

\n\n

谢谢

\n\n

编辑1:这是我的完整代码

\n\n
import javax.imageio.ImageIO;\nimport java.awt.*;\nimport java.awt.font.FontRenderContext;\nimport java.awt.geom.Rectangle2D;\nimport java.awt.image.BufferedImage;\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.IOException;\n\npublic class Test {\n    public static void main(String[] args) throws IOException, FontFormatException {\n        String string = "\xc3\x84\xc3\xa4\xc3\x96\xc3\xb6\xc3\x9c\xc3\xbc\xc3\x9f";\n        BufferedImage image;\n\n        Font font = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream("NotoSans-Regular.ttf")).deriveFont(50f);\n        Rectangle2D rec = font.getStringBounds(string, new FontRenderContext(null, false, …
Run Code Online (Sandbox Code Playgroud)

java unicode fonts awt graphics2d

2
推荐指数
1
解决办法
2703
查看次数

标签 统计

awt ×1

c ×1

emulation ×1

fonts ×1

graphics2d ×1

java ×1

optimization ×1

unicode ×1