Sorry for the incomprehensible display.
“Lv:x” on the first line of the status screen indicates the floor where the hero is located. The level based on the experience value of the hero is the display of “Ex:x”.
“pressing a combination”, I see!
I will be able to release a new version soon.
My teacher, @Pharap. Sorry for the late reply.
Last Friday, I reviewed the code in order to secure the memory vacancy. And I succeeded in securing about 800 bytes of free space. I thought about using the technique taught by the teacher to modify the program.
However, I thought on the way. I thought that it would be better for me to rewrite my program from the beginning. Once I gave up the function of saving and started fixing the problem.
I do not fully understand the technique taught by the teacher. But someday I understand everything and I will rewrite this program.
Also, I do not have enough time so I can not reach the usage of GitHub.I have the source code put here.
Thank you for your reply.
Rogue is an old UNIX program. I wanted to reproduce the program as faithfully as possible. 26 kinds of monsters and their special attacks, 14 kinds of potions, 12 kinds of scrolls, etc, etc…I think that information on UNIX’s original Rogue also applies to this game. Arrows, darts, shrikens and daggers are throwing weapons. If you throw the arrow after equipping the bow, bonus will be attached to the accuracy and damage.
Variables in my code are wasteful. Even though I use only 1 bit for the variable representing the state of the hero, 8 bits are allocated.
For safety reasons, no trap is set up in my “Rogue” dungeon. I think that this is also possible if I reconsider how to use variables. (room number uses 3 bits, Structure’s ID uses 5 bits)
My “Rogue” has only 21 x 8 = 168 partitions. Currently, the positions of hero and monsters are represented by 2 bytes, but 1 byte is sufficient.
I am planning to review all the variables with reference to the “struct” of “item” taught by the teacher.
Wow! I was mistake!
Ah… I did not fix this either.
I wrote findPlace function and findPlaceM function.
findPlace function called, when hero throw item, but not hit monsters.
findPlaceM function called, when hero read a scroll of create.
These two were very similar. So I take arguments to decide whether it is a monster or a droped object.
Probably, I think that it is together.
If I use “Arduboy2Base” instead of “Arduboy2” and use Mr. @filmote 's “font 4 × 6”, will free memory increase?
Due to the pleasure of having a GitHub account, I submitted this game to “Erwin’s Arduboy Collection”. At that time, I referred to your “Big asterids!” Article. If I upgrade the game, can I upload it to the current version instead?
Wow… I made a mistake… (Is my way of doing it this time?)
I see. I understand.
Thank you very much. I will try it.
I began studying “C ++”. Programming is very fun. Also, although a large memory area is good, it is fun to pack it in 32 K bytes. There are many things to do, but someday I will submit my report to my teacher.I am a bad student, but do not abandon me.
Thank you for that but I don’t have an Arduboy with Cathy3k. Ever thought about removing USB stack to gain some memory and use a button on title screen to go into bootloader mode?
@Pharap do you think it’s worth a shot and if so could you help him out? We did that on minirogue if I remember right.
@BlueMax I know you don’t have the space, yet, but a winning screen showing that you won’t and displaying some kind of score based on the loot you have might make the game more fun to play. If only to beat other people or our own scores.
But I gotta say, after reading on the original Rogue, you are really doing a great job recreating it.
Edit: there’s a small graphical glitch on the title screen. Probably because you didn’t need the dimension of the sprite in the image code.
Question for @Pharap, is it possible to make it so that the status screen pops up if we press down while we hold A? Right now you have to press them both at the same time and it’s not working everytime .
I think you mean “is my way of doing it right this time?” or “is that right?”.
(‘right’ can mean ‘correct’/‘proper’.)
In which case, yes.
You can say “I was mistaken”, but the meaning is different to “I made a mistake”, and it’s more old fashioned.
“I made a mistake”/“That was a mistake” is for when you accidentally do something wrong.
(e.g. when your code has a bug).
“I was mistaken” (less common) / “I was wrong” (more common) is for when something you think/believe is incorrect.
(e.g. Person A: "int is 4 bytes" Pharap: “no, int is 2 bytes on Arduboy and usually either 4 bytes or 8 bytes on desktop” Person A: “Oops, sorry, I was wrong. Pharap is correct.”)
If you remove the USB stack using the feature provided by the Arduboy2 library, you don’t necessarily have to add anything to your code to allow putting the unit into the bootloader. Using the ARDUBOY_NO_USB macro will include code which checks for the DOWN button being pressed during power up and, if so, enter the bootloader.
However, if you have the space you can add a menu item, or some other method, to prompt the user to initiate bootloader state, then the code can invoke it using the provided exitToBootloader() function.