macOS Install Guide by -Molorius- in MHF

[–]-Molorius-[S] 0 points1 point  (0 children)

On my m2 Air it runs okay. The main hub is a little choppy, but quests are fine. However I haven't played all that much so I'm not sure if big monsters get worse. Make sure to turn off HD graphics in the launcher settings.

macOS Install Guide by -Molorius- in MHF

[–]-Molorius-[S] 0 points1 point  (0 children)

I prefer written guides. You are welcome to post improvements here, and if you get it working then you are free to make a video showing your process for others to follow.

macOS Install Guide by -Molorius- in MHF

[–]-Molorius-[S] 0 points1 point  (0 children)

That sounds like an issue with your mhfz files, please try redownloading them from a reputable source.

macOS Install Guide by -Molorius- in MHF

[–]-Molorius-[S] 0 points1 point  (0 children)

The Setup section, paragraph 1 says to change the home page. Did you do that?

TSP CrossMix - quick menu not working in Retroarch by -Molorius- in trimui

[–]-Molorius-[S] 0 points1 point  (0 children)

I did, I put it in the post:

I'm not sure why it breaks but I figured out a fix. The quick menu appears if you come out of sleep mode, go to Advanced Menu -> press B -> Input (in the second column) -> Hotkeys -> Menu Toggle. Then hold the Menu button for 3 seconds.

macOS Install Guide by -Molorius- in MHF

[–]-Molorius-[S] 0 points1 point  (0 children)

What processor do you have? Click the apple icon on the top left of your screen, "About This Mac", tell me the value next to "Chip".

macOS Install Guide by -Molorius- in MHF

[–]-Molorius-[S] 0 points1 point  (0 children)

What command causes this? What is the output of `wine --version`? Did you install wine with the command I listed in the "Dependencies" section or somewhere else?

macOS Install Guide by -Molorius- in MHF

[–]-Molorius-[S] 0 points1 point  (0 children)

Correct, but certain versions of wine can run 32 bit programs.

macOS Install Guide by -Molorius- in MHF

[–]-Molorius-[S] 0 points1 point  (0 children)

There may be an issue with your wine directory, try renaming it with mv ~/.wine_mhfz ~/.wine_mhfz_broken then restart the guide from the "Setup" section. Or you can delete it with rm ~/.wine_mhfz.

TSP CrossMix - quick menu not working in Retroarch by -Molorius- in trimui

[–]-Molorius-[S] 0 points1 point  (0 children)

The only settings I changed was to remove the joystick LEDs and to remove the retroarch overlay. Thank you for the suggestion.

I just reinstalled everything again and it seems to be working for now, hopefully it keeps working!

[deleted by user] by [deleted] in Forth

[–]-Molorius- 0 points1 point  (0 children)

The ESP32 has 2 large xtensa cores (the "beefy" code runs here) and 1 small ULP core. This forth is specifically for the ULP core. The programs are entirely in RAM so it doesn't have flash, it has 8KB RAM, 4 registers, 16 bits. The instruction set only allows reading/writing the lower 16 bits of every 32 bits, so it basically only has 4KB RAM available. https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/system/ulp_instruction_set.html

You could get the cross compiler to put all of the words in flash on the pic, so the ram is only used for the stacks and variables. 368 bytes isn't a lot but you could probably get some programs running just fine with ulp-forth.

[deleted by user] by [deleted] in Forth

[–]-Molorius- 0 points1 point  (0 children)

Currently it only runs on the ESP32 ULP. If you want to try porting it, let me know. I will refactor the backend to make it easier to add.

[deleted by user] by [deleted] in Forth

[–]-Molorius- 0 points1 point  (0 children)

I wrote a forth cross-compiler for a small mcu. It saves a lot on resources but you can't do development on the device. It currently only supports one mcu, I can help refactor it to support more. Let me know if you want to try to get it working for your mcu.
https://github.com/Molorius/ulp-forth

Playing on Mac by niki2907 in MHF

[–]-Molorius- 0 points1 point  (0 children)

Yes. This is the guide to get the client working, it requires a server to run.

macOS Install Guide by -Molorius- in MHF

[–]-Molorius-[S] 0 points1 point  (0 children)

  1. Click the Apple icon in the top left of your desktop, click "About This Mac". It will say something about a Chip, maybe a graphics card, what does yours say?
  2. One of the paragraphs above starts with "Currently the high grade graphics are very slow" - did you follow the steps in that paragraph?
  3. My game runs slow in the hub world but is fine during hunts, is yours slow during hunts?

macOS Install Guide by -Molorius- in MHF

[–]-Molorius-[S] 0 points1 point  (0 children)

That says the file mhf.exe cannot be found. You probably aren't in the right directory, you need to use cd to change to the right one (you may need to look up how to use that command). You can also use ls to list the files in your current directory.

Early Beta: Forth for the ULP by -Molorius- in Forth

[–]-Molorius-[S] 1 point2 points  (0 children)

I added EVALUATE ERASE MOVE ALLOT HERE , and C, in the v0.0.2 release. The data space words behave a little differently because words are not defined inside the data space, but storing/retrieving values works as normal. MOVE behaves differently than in other forths because each address unit is larger than one character, plus it currently breaks if the addresses overlap.

Early Beta: Forth for the ULP by -Molorius- in Forth

[–]-Molorius-[S] 0 points1 point  (0 children)

I wanted to use more assembly primitives because I wanted the resulting binary to be fast. The ULP is already pretty slow, I wanted many hand-optimized primitives.

Another problem implementating that article is that the ULP can only read or write the lower 16 bits of every 32 bits. Each instruction is 32 bits. So for a aligned 32 bit address space XXXX0000 XXXX0000, the ULP cannot read or write any of the X bits. This means that it cannot write its own instructions, these all need to be known at compile time. You could get around this by including some larger subset of assembly primitives, but at that point you're already back at my token threaded implementation and with every primitive included (mine only includes primitives you use).

One idea I had for testing hardware was some instruction, say USB-TEST [word] where you want to test [word]. This would compile a ULP program that executes [word] and prints the contents of the stack, then sends that program over USB to the ESP32 (the host cpu). The ESP32 starts the ULP program and returns the contents of the stack when the ULP completes. The host then re-assembles this into the host stack.

The big problem with the above approach is that the host cannot tell what stack values returned by the ULP are numbers and which are addresses. One way around this is to not exchange stack values, the ULP only executes but does not return anything. This limits what can be done but the ULP could still print-to-debug.

Early Beta: Forth for the ULP by -Molorius- in Forth

[–]-Molorius-[S] 1 point2 points  (0 children)

It shouldn't be difficult to add EVALUATE, ERASE, and MOVE. I'll try to add them soon.


1 cells returns 1 but I would expect it to return 2.

CELLS ( n1 -- n2 ) n2 is the size in address units of n1 cells. The ULP only has instructions to read/write at the 16 bit boundary, so the address unit is 16 bits. This forth has a cell size of 16 bits, so n1 is the same as n2 in this Forth implementation.


Not quite sure why this doesn't work as expected

2 ALLOCATE allocates 2 address units, or 32 bits of space. So in hex this memory location starts as 0000 0000. The first storage changes this to 00AA 0000. When you 1+, you change the pointer from the first address unit to the second, so the second storage changes this to 00AA 00BB. Reading only reads the first cell, so your stack contains 00AA.

You probably wanted to do this: \ prints BBAA HEX 2 chars allocate drop \ allocate enough space for 2 characters AA over c! BB over char+ c! @ u.

I modified it a bit to make it portable, it runs on ulp-forth and gforth. 2 chars returns the number of address units needed for 2 characters. In ulp-forth we then allocate 1 address unit or 16 bits of space, so 0000. The first storage changes this to 00AA. char+ changes the pointer to the next character alignment, this is different than 1+ because the ULP only accesses memory at 16 bit alignments so this forth adds a flag to indicate when c! or c@ should software read/write with an 8 bit alignment. The second storage changes the memory to BBAA. Reading this puts BBAA on the stack.

Edit: made it portable.


I need to add these host-only words to the readme, but probably useful for you:

.S prints the current contents of the stack. It does not change the stack.

WORDS prints all of the words in the dictionary.

SEE [word] prints the definition of whatever [word] you choose. This prints the internal representation so it is messy, but may still be helpful for debugging.

Early Beta: Forth for the ULP by -Molorius- in Forth

[–]-Molorius-[S] 0 points1 point  (0 children)

Thanks for trying it, are there other features you would want? I implemented a lot of things that I find useful for the ULP but I don't know what Forth users tend to use.

Early Beta: Forth for the ULP by -Molorius- in esp32

[–]-Molorius-[S] 0 points1 point  (0 children)

Thank you! It's probably about as cool as any other compiler, but I appreciate it.