Autor Tema: Mode 7 problems - possible bugs  (Leído 16307 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ruckage

  • Newbie
  • *
  • Mensajes: 24
  • Karma: 1
    • Ver Perfil
Mode 7 problems - possible bugs
« en: Enero 24, 2012, 08:57:40 am »
Hello,

I've been getting back into using Bennu again and today I decided to experiment with Mode 7 a bit however things don't seem be working as they should.
I've used mode 7 a bit in fenix and in Div before that so Its possible some things have changed but things just don't seem right and it sadly renders Mode 7 almost unusable in Bennu for anything other than backgrounds which is a shame.

Below is my understanding of how mode7 is started and it's associated global struct(at least how it used to be)
Citar
start a mode 7 window:
Start_mode7(m7_number,file,graph,external_graph,region,horizon);

m7 structure:
Camera: - process id for the camera
Height: - height of the camera
distance: distance of the camera from the process set under camera
Focus: perspective (FOV)
z: z depth of plane
color: color used to fill outside of mode 7 plane

This all seemed to work almost as I remebered but with some fairly major issues:

Focus: Doesn't seem to work.
  • FOV doesn't change
  • Anything below 512 the texture on the plain gets increasingly pixelated
  • higher values make processes within the m7 window bigger, lower values makes the processes smaller.
Height: works with bugs.
  • Increasing the height too much causes the mode 7 plain to warp.  The height at which this warping occurs is dependant on the value set with focus.
Process Size:
In Mode 7 under div/fenix you could use the local variable size to adust the size that a processes graph displays at within the mode 7 window.  However size has no affect at all now.
Size_x and  size_y does affect the graph but adversely as setting either of these to a value of greater than 100 stops them scaling within the mode 7 window (the graph appears at full size regardless of the distance from the camera).


That's everything I've noticed so far, I'll write a small test program this evening to try to demonstrate the problems more clearly.

Ruckage



Desconectado BlackCurtain

  • Full Member
  • ***
  • Mensajes: 187
  • Karma: 9
  • Sexo: Masculino
    • Ver Perfil
    • Black Curtain Studio
Re: Mode 7 problems - possible bugs
« Respuesta #1 en: Enero 24, 2012, 10:43:49 am »


Focus: Doesn't seem to work.
  • FOV doesn't change
  • Anything below 512 the texture on the plain gets increasingly pixelated
  • higher values make processes within the m7 window bigger, lower values makes the processes smaller.


I was kinda confused by the focus variable a first too. What it does is increasing the size/focus of all m7 graphics in the given mode7 view, i.e: m7[3].focus=200; gives all the processes in the 3rd mode7 view the focus of 200.

Desconectado ruckage

  • Newbie
  • *
  • Mensajes: 24
  • Karma: 1
    • Ver Perfil
Re: Mode 7 problems - possible bugs
« Respuesta #2 en: Enero 24, 2012, 03:50:12 pm »
Hi Black Curtain, and thanks for the reply.

While I agree that's what it appears to do In Bennu I don't think that's exactly it.  And if that was it's purpose it shouldn't have any effect on the resolution of the 3d plain itself. 

After looking some more I think I understand what focus actually does in Bennu...
Here's a screenshot of various focus settings at a screen resolution of 320x240:



Notice how the resolution of the 3d plain increases with the focus value.  The optimal setting for a 320x240 display is actually 240.  If you render the same scene at 640x480 with a focus of 240 the display is blocky and the process graphs smaller.  It turns out the optimal setting for 640x480 is a focus of 480.

Therefore I believe the actual use of the focus setting under bennu is for adjusting the game to work correctly at different resolutions.

I'm still sure it's original use back in DIV and Fenix was to alter the actual FOV, though my memory could be hazy.

That still leaves the problem of warping if the camera is set too high and not being able to adjust the size of a processes graph which is pretty important.  And being able to adjust the field of view would be extremely useful though not essential.


Desconectado MisterN

  • Hero Member
  • *****
  • Mensajes: 650
  • Karma: 4
    • Ver Perfil
Re: Mode 7 problems - possible bugs
« Respuesta #3 en: Enero 24, 2012, 07:07:56 pm »
can you upload the .prg of that?
werg

Desconectado ruckage

  • Newbie
  • *
  • Mensajes: 24
  • Karma: 1
    • Ver Perfil
Re: Mode 7 problems - possible bugs
« Respuesta #4 en: Enero 25, 2012, 01:13:26 am »
can you upload the .prg of that?

Hello, do you need a program to understand how to properly use/setup a mode 7 window?  If so I'm happy to write a quick tutorial program but I'll post it to a separate topic to stop this one from getting cluttered.

Conectado FreeYourMind

  • Hero Member
  • *****
  • Mensajes: 5554
  • Karma: 125
  • Sexo: Masculino
    • Ver Perfil
    • GECA soft
Re: Mode 7 problems - possible bugs
« Respuesta #5 en: Enero 25, 2012, 01:26:15 am »
no code, no help xD

Desconectado MisterN

  • Hero Member
  • *****
  • Mensajes: 650
  • Karma: 4
    • Ver Perfil
Re: Mode 7 problems - possible bugs
« Respuesta #6 en: Enero 25, 2012, 06:03:13 am »
can you upload the .prg of that?

Hello, do you need a program to understand how to properly use/setup a mode 7 window?  If so I'm happy to write a quick tutorial program but I'll post it to a separate topic to stop this one from getting cluttered.

Ive never seen raycasting done before that would be perfect XD
werg

Desconectado handsource-dyko

  • Hero Member
  • *****
  • Mensajes: 568
  • Karma: 32
  • Sexo: Masculino
  • I'm the eye in the sky.
    • Ver Perfil
    • dyko designs
Re: Mode 7 problems - possible bugs
« Respuesta #7 en: Enero 25, 2012, 06:03:37 am »
So focus should optimally be the same as the vertical resolution?  What happens if you increase the focus but not the vertical resolution?

Desconectado ruckage

  • Newbie
  • *
  • Mensajes: 24
  • Karma: 1
    • Ver Perfil
Re: Mode 7 problems - possible bugs
« Respuesta #8 en: Enero 25, 2012, 06:38:05 am »
So focus should optimally be the same as the vertical resolution?  What happens if you increase the focus but not the vertical resolution?
Hi handsource-dyko,

That seems to be the case from my testing.  If you increase the focus the objects get bigger but little if anything happens to the plane itself once you go past the optimal resolution.
A 640x480 display with a focus of 480 will exactly match  a 320x240 display with a focus of 240 which is what leads me to think its purpose is for displaying at different resolutions.  I also assume it becomes extremely useful in that respect if you wanted to add a split screen mode to a game.

I also went back to fenix to confirm what focus did in the fenix implementation and the FOV seems to change under that implementation but only after the optimal focus point so I think the FOV changing was possibly a pleasant side effect of a bug (mode 7 was always bugged in various ways under fenix).

Here is mode7 under fenix with high focus and the FOV is clearly changed.




Hello, do you need a program to understand how to properly use/setup a mode 7 window?  If so I'm happy to write a quick tutorial program but I'll post it to a separate topic to stop this one from getting cluttered.

Ive never seen raycasting done before that would be perfect XD

Hi DoctorN,  Mode7 and raycasting are different things, mode 7 can only display flat planes, not walls, but I've written a tutorial program for Mode 7 in case it's useful to anyone and will upload it in a minute.

Desconectado ruckage

  • Newbie
  • *
  • Mensajes: 24
  • Karma: 1
    • Ver Perfil
Re: Mode 7 problems - possible bugs
« Respuesta #9 en: Enero 25, 2012, 07:10:45 am »
I've uploaded the Mode 7 demonstration program.
You can find it here: http://forum.bennugd.org/index.php?topic=2929.0

Desconectado MisterN

  • Hero Member
  • *****
  • Mensajes: 650
  • Karma: 4
    • Ver Perfil
Re: Mode 7 problems - possible bugs
« Respuesta #10 en: Enero 25, 2012, 10:54:16 am »
I can work on the walls
werg

Conectado FreeYourMind

  • Hero Member
  • *****
  • Mensajes: 5554
  • Karma: 125
  • Sexo: Masculino
    • Ver Perfil
    • GECA soft
Re: Mode 7 problems - possible bugs
« Respuesta #11 en: Enero 25, 2012, 10:58:37 am »
Amazing fenix picture!
Anyway you can use the mod_yeti3dpro if you want with a better 3D look, I release the module this weekend, for Wiz, Caanoo and OpenPandora.

Conectado SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12514
  • Karma: 369
  • Sexo: Masculino
    • Ver Perfil
Re: Mode 7 problems - possible bugs
« Respuesta #12 en: Enero 28, 2012, 03:43:57 pm »
then? final report? whats you think are bugs and what not?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Desconectado sulheru

  • Newbie
  • *
  • Mensajes: 5
  • Karma: 0
    • Ver Perfil
Re:Mode 7 problems - possible bugs
« Respuesta #13 en: Octubre 03, 2013, 02:26:19 am »
I've got a problem with my mode7. m7.horizon doesn't work. this is my source:

import "mod_m7"
import "mod_proc"
import "mod_video"
import "mod_text"
import "mod_map"
import "mod_draw"
import "mod_math"
import "mod_grproc"
import "mod_key"
import "mod_wm"

GLOBAL

   int fichero1;

end

Process Main()
begin

    set_mode(1024,768,16);
    set_fps(50,0);

   fichero1=load_fpg("C:\Users\Theos\Documents\fbmx projects\the_hollow_eve.fpg");

    start_mode7(0, fichero1, 1, 2, 0, 30);

    m7.height = 5;
    m7.distance = 32;
    m7.color = 162;
    m7.camera = id;
    m7.horizon = 30;

    write(0, 160, 0, 1, "Utilice los cursores para moverse");

   //write_int(0, 0, 10, 0, 0, x);
   //write_int(0, 0, 10, 0, 0, y);

    repeat
        IF (key(_right)) angle-=800; END
        IF (key(_left)) angle+=800; END
        IF (key(_up)) advance(6); END
        IF (key(_down)) advance(-6); END
      
      if (key(_d)) xadvance(angle-90000,6); end
      if (key(_a)) xadvance(angle+90000,6); end
      if (key(_w)) m7.height+=4; end
      if (key(_s)) m7.height-=4; end

      if (key(_j)) m7.distance-=4; end
      if (key(_l)) m7.distance+=4; end
      if (key(_i)) m7.horizon--; end
      if (key(_k)) m7.horizon++; end


      if((key(_alt)) && (key(_x))) BREAK; END

      frame;
   until(exit_status)
   let_me_alone();
   exit();
end

Desconectado handsource-dyko

  • Hero Member
  • *****
  • Mensajes: 568
  • Karma: 32
  • Sexo: Masculino
  • I'm the eye in the sky.
    • Ver Perfil
    • dyko designs
Re:Mode 7 problems - possible bugs
« Respuesta #14 en: Octubre 03, 2013, 05:54:27 am »
I see that you set m7.height = 5 and m7.horizon = 30.


As far as I can remember, the height and the horizon maybe more or less the same thing. I'm not exactly sure but they could possibly interfere with each other. Maybe something has changed but the "height" sets the height of the horizon relative to the top of the screen. "horizon"could be a alias.