News: 11 March 2016 - Forum Rules, Mobile Version
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Gemini

Pages: [1]
1
Personal Projects / Final Fantasy IV Prettified
« on: November 24, 2017, 10:04:10 pm »
It's about time I stop spamming this into the screenshots thread and move it to a separate discussion. So, what is FF4 Prettified? Like the name suggests, it's an embellished version of Final Fantasy IV with full proportional font (VWF) implemented to make it more pleasing to the eye.

The idea behind this hack comes from some old tutorial byuu published years ago on his website (which can be currently found here) involving prerendered tiles and DMA transfers to avoid actually drawing anything other than pre-built sets of tiles for almost everything. This handy trick allows proportional fonts with almost no lag whatsoever and it can be applied pretty much to any game in need.

Most of the text used in this hack is either lifted from FFIV: Complete Collection, tweaked from there, or quickly translated from the original messages. So, in a manner of speaking, it can't be considered a real retranslation, even if it's based on a vanilla ROM of Final Fantasy IV (J). I'm not sure myself if this should be posted, when completed, to the hack section or as a translation; feedback on this would be appreciated. :P

The project is completely open source and can be modified by anyone who would like to either improve it or use it for a derivative translation / hack. You can find sources compatible with xkas plus here: https://github.com/Gemini-Loboto3/prettify

For the moment it covers mostly in-game menus, shops, and Namingway screens, but I'm planning on expanding it to dialog and battles. It also includes a nice expansion to player names, now supporting 8 characters instead of 6. I already have a full disassembly of the ROM ready to roll and I have located most of the stuff that needs to be changed, meaning it's a matter of time and brainstorming. :thumbsup:

Screenshots:


Old videos:
https://www.youtube.com/watch?v=o6lEC8zBP-Q
https://www.youtube.com/watch?v=3R2vrqmKU1Y

2
Gaming Discussion / Mighty No. 9 hit Steam, anybody playing it yet?
« on: June 22, 2016, 08:07:32 am »
Got myself a copy of the game, been playing it non stop for two hours now. Gameplay is rock solid, pretty Megaman clone despite all negative feedback it got due to countless delays. So far so good.

Anybody else playing it or going to grab a copy?

3
Programming / PlayStation development articles, feedback appreciated
« on: June 12, 2016, 11:50:37 am »
Lately I started writing some PS development tutorials / advise articles that provide some directions to users who would like to get involved in the topic or for those interested in tackling the system in more efficient ways. So far I came up with four articles, but I have a fifth in mind about 3D effects; nothing too fancy, just a PlayStation pad with 3D analog sticks moving as they react to actual input, while other buttons would be flashing yellow to reflect the remaining input.

Article 1: The do’s and don’ts of PlayStation programming
Article 2: Writing a good replacement for LibGS
Article 3: Light sources: how they work and what you can do with them
Article 4: Working around 2D primitives (includes sources and VS201X project)

Are these articles any easy to follow or interesting to read? I'm thinking of writing more, but I need some directions to check if I'm making any sense.

4
Programming / [PC] Non-linear code flow
« on: May 07, 2014, 01:02:36 pm »
These days I'm working on my own engine, again. For the moment the whole environment runs on a PlayStation setup with non-linear code flow, which is basically a main loop with a scheduler of sorts that can jump among tasks, something that is referred by Sony as threading (but it's really not). So my question would be: is there any way on PC to preserve the machine state, jump to a section of code and keep that in sync between critical sections? Here's a sample of what I mean:
Code: [Select]
int main()
{
Init_scheduler();
Init_system();
Task_execute(0,Init_main);

while(1)
{
Rnd();
// reset pool
GfxResetPacket();
// cache pad reads
Read_pad();
// set sort lists
Clear_sort_lists();
// progress with threads
Scheduler();
// carry fade effects
System_trans();
// display primitives and flip buffers
Sort_display();
}

return 0;
}
This is my game loop, which keeps executing between frame VSync. Now, what Scheduler() does there is fetching tasks and returning to the main loop as soon as a "sleep" signal is hit. Here's an example of tasks altering code flow:
Code: [Select]
void Init_main()
{
Trans_init();
Task_chain(Game_loop);
}

void Game_loop()
{
while(1)
{
if(!(G.System_flg & SYSFLG_STOP))
{
Pl_move();
Sca_ck_em((EM_WORK*)&Pl_work,0x8000);
Enemy_move();
}

Sp_to_scratch();
Update_entity((EM_WORK*)&G.Player);
for(i=0; i<MAX_ENEMIES; i++)
if(G.pEnemy[i])
Update_entity(G.pEnemy[i]);
Sp_restore();
Task_sleep(1);
}

Load_overlay(OVR_TITLE,CD_READ_SYNC);
}
Task_sleep() is a function that takes a timer as a parameter to tell the scheduler how many vsync cycles it has to wait before code can be executed again from the point where it left, keeping the CPU state almost exactly like it was. The moment Task_sleep is called, my code returns to the body of Scheduler() and carries on with the following tasks if they are active. Usually the first task must always be active in order to have anything moving on screen, which is what Task_execute(0,Init_main) does. Task_execute() sets a function to the task list (first parameter is the priority of it, ranging from 0 to 2, where 0 means it's the first to be executed and 2 means the last), while Task_chain reroutes the program counter to another function by effectively taking the current task and changing code flow in a critical section, almost like an interrupt.

I tried searching for many approaches and apparently semaphores and mutex seem the closest thing, but I'm not entirely sure if they are even remotely similar, given the structure of my code so far.

5
Programming / Camera vectors rotation and vertical strafe
« on: September 04, 2012, 04:39:56 pm »
I'm currently working on an editor for a game that uses static camera angles based on position and direction vectors (or eye and at, if you prefer). So far I got most of the implementation correctly, but I'm pretty much 3D-dumb and what I'd like to do now is kinda out of my reach due to crappy math knowledge: manipulating the camera via mouse dragging. At the moment I got a working zoom feature and horizontal strafe. What I'm missing is vertical strafe and rotation (or rather, a working rotation system).

Here's the current code ('????' lines basically translate as "I'm totally lost, please help me fill gap"):
Code: [Select]
void Strafe(D3DXVECTOR3 &eye, D3DXVECTOR3 &at, float dx, float dy)
{
D3DXVECTOR3 t;
// get direction and normalize it
D3DXVec3Cross(&t,&(at-eye),&D3DXVECTOR3(0,-1.f,0));
D3DXVec3Normalize(&t,&t);
// apply horizontal strafe
eye-=t*dx;
at-=t*dx;

// apply vertical strafe
????
}

void CBackgroundPanel::OnMouseMove(int xPos, int yPos)
{
int diff_x=xPos-mouse_dragX;
int diff_y=yPos-mouse_dragY;
float x, y;
D3DXVECTOR3 eye, at;
D3DXVECTOR3 trans;

switch(mouse_drag)
{
case MODE_CAMERA_ROTATE:
#if 0
// convert eye and at vectors to float coordinates
SetCameraVector(&eye,&at);
x=(float)diff_x/ClientSize.cx;
y=(float)diff_y/ClientSize.cy;
// apply rotation
????
// back to 1.19.12 fixed point coordinates
room->camera.pos[camera_index].camera_to_x=(int)(at.x*4096.f);
room->camera.pos[camera_index].camera_to_y=(int)(at.y*4096.f);
room->camera.pos[camera_index].camera_to_z=(int)(at.z*4096.f);
// update mouse data and views
mouse_dragX=xPos; mouse_dragY=yPos;
Invalidate(); m_Mesh->Invalidate();
#endif
break;
case MODE_CAMERA_MOVE:
// convert eye and at vectors to float coordinates
SetCameraVector(&eye,&at);
x=(float)diff_x/ClientSize.cx;
y=(float)diff_y/ClientSize.cy;
// apply strafe
Strafe(eye,at,x,y);
// back to 1.19.12 fixed point coordinates
room->camera.pos[camera_index].camera_from_x=(int)(eye.x*4096.f);
room->camera.pos[camera_index].camera_from_y=(int)(eye.y*4096.f);
room->camera.pos[camera_index].camera_from_z=(int)(eye.z*4096.f);
room->camera.pos[camera_index].camera_to_x=(int)(at.x*4096.f);
room->camera.pos[camera_index].camera_to_y=(int)(at.y*4096.f);
room->camera.pos[camera_index].camera_to_z=(int)(at.z*4096.f);
// update mouse data and views
mouse_dragX=xPos; mouse_dragY=yPos;
Invalidate(); m_Mesh->Invalidate();
break;
case MODE_CAMERA_ZOOM:
// convert eye and at vectors to float coordinates
SetCameraVector(&eye,&at);
//create direction vector
D3DXVec3Normalize(&trans,&(at-eye));
eye+=trans*(((float)diff_x)/ClientSize.cx);
at+=trans*(((float)diff_x)/ClientSize.cx);
// back to 1.19.12 fixed point coordinates
room->camera.pos[camera_index].camera_from_x=(int)(eye.x*4096.f);
room->camera.pos[camera_index].camera_from_y=(int)(eye.y*4096.f);
room->camera.pos[camera_index].camera_from_z=(int)(eye.z*4096.f);
room->camera.pos[camera_index].camera_to_x=(int)(at.x*4096.f);
room->camera.pos[camera_index].camera_to_y=(int)(at.y*4096.f);
room->camera.pos[camera_index].camera_to_z=(int)(at.z*4096.f);
// update mouse data and views
mouse_dragX=xPos; mouse_dragY=yPos;
Invalidate(); m_Mesh->Invalidate();
break;
}
}

If the explanation about horizontal and vertical strafe isn't clear, please use this video as a reference. To make it simple, the camera follows mouse movements as if it all was a 2D scene with 3D objects.

6
Personal Projects / Translhextion, tentative new revision
« on: April 28, 2012, 10:37:20 pm »
The title should be pretty much self explaining, but I'll add a bit more context to what this project is supposed to be. I'm working on an improved version of the Translhextion editor by rearranging the sources in a much more organized manner (the original was a mess of header files with code or global symbols scattered all over the place with no real clear picture in mind, or at least that's what it seemed to me). Not only that, I'm also adding new features and fixing what was utterly broken in the 1.6c build, like the string/hex search.

A screenshot of what the program looks like now:


What has been done so far:
  • Updated the sources so that they'd compile on anything newer than Visual Studio 6;
  • Removed redundant classes such as bvect (the usual std::vector does the same and better) and added data helpers such as CSearch or CDialog;
  • Reorganized the sources so that code contains code, headers are simply headers and contain no more than static values, macros, and structure definitions. Also, most messages were moved to a string table in the resources;
  • Added native Unicode support (UTF16) which has helped a lot in managing table features and the way string data shows on the main window (no more need for the Januschan JOME Regular font);
  • [WIP] Started working on a frame class that encapsulates the hex editor area. This could also help in implementing a pseudo MDI interface, enabling the possibility of loading more than one file in a single instance of the editor. At the moment the CHexFrame class is rather bare bone and doesn't show much on screen, other than the "Offset" caption, but it will change soon as I start moving code from mainwindow.cpp;
  • [WIP] New menu interface with icons and toolbars, since it seems to be quite the standard today for making functional GUIs.

For those of you who want to help with the project (any help is really appreciated!), this is the SVN where all the sources are uploaded:
http://code.google.com/p/translhextion

7
ROM Hacking Discussion / Screenshots
« on: September 04, 2011, 09:02:29 pm »
Implemented the third VWF in a row:

This one was using 16x16 4bpp blocks. I'm really starting to hate this game's code with a passion.

8
Script Help and Language Discussion / Kanji ID time!
« on: August 04, 2011, 05:58:28 pm »
Anybody can help with this ideogram mess?

The kanji part seems to follow some kind of standard, but I couldn't find a decent SJIS/Unicode table to make sure.

Thanks!

9
Personal Projects / Opera of the Red Moon (my Castlevania game)
« on: September 28, 2008, 09:43:17 am »

General Info
Genre: Metroidvania
Language: Multi 6 (Eng, Ita, Fra, Spa, Ger, Jap)
Developer: NO-Maki! (aka myself)
Platform: Playstation
No. of Players: 1
No. of Discs: 1

Description
This project was created a long time before Order of Ecclesia, and it was going to introduce the first female heroine ever in a metroidvania, but Shanoa stole Maria's spotlight. So what is it now? It's just a prototype with a cool main character who can blow up a demonic castle using only two fingers. Oh no, that was the Saturn version of Maria. :x Mine will be a lot more balanced and a little more complicated. She will be able to use items, and other goodies already implemented in the kernel database. It's also supposed to have a mini-world map, and I swear I didn't copy this from IGA's game.
At the moment I'm the only one working on the game. I really need a couple people for all the gfx (many monsters will be ripped from SOTN, fortunately), and somebody else for sound and music. :/ I wanna see Maria in her stabbing pose (she lacks the frames). Feel free to send me a PM if you're interested!

Features
  • A not-so-broken collision system;
  • Maria will be using weapons (for the first time ever, woot);
  • Elemental orbs, used for particular spells;
  • Special abilities, like the "MEGA! Buster" from Saturn Maria;
  • Shen-mue/God of War "tap a button!" scenes;
  • Abuse of the environment to kill some of the bosses;
  • The "guide" option implemented in the DS Castlevanias;
  • Many seekitz!

Story
First of all, there's no Dracula in here! This game is supposed to be a gaiden, so it will take some elements of the original story, but without making up absurd stuff typical of homebrew projects.
The game takes place 1,5 years before Symphony of the Night, a few months before Richter goes missing. By pure chance, Maria finds a letter of her dad with a mysterious jewel called the Eye of Osiris, which is said to have an incredible mystic power. The letter also mentions a vampire castle in Serbia, so she decides to take journey to the Plains of Macka (where the castle is supposed to be located) to go and kick some vampire asses, and get more experienced in the process.
When she reaches the plains, a Behemot starts chasing her, and this is when Maria uses the Eye of Osiris to cast an incredibly powerful flame spell (prepare to see a Shenmue button-tapping scene here), which is unfortunately not very effective on the monster. The Eye of Osiris hasn't been used in a long time, probably centuries, so the tremendous amount of mana released cracks the jewel, so Maria's forced to run for her life, and that's when the game starts.

Screenshots

PC build of the engine, used for fast&simple debugging (very limited at the moment).


Trying to expand the display area from 256x208 to 320x208. The parallax is completely wrong, I know. xD


Left: current equipment screen. Right: mock of what I want it to look like.

The main editor:
- Map editor;
- Item editor;
- Playing character editor.

Pages: [1]