[RGD] DirectX implementation of RGSS3

Discussion in 'Useful Development Tools' started by invwindy, May 13, 2018.

  1. Archeia

    Archeia Level 99 Demi-fiend Staff Member Developer

    Messages:
    14,515
    Likes Received:
    14,142
    Location:
    Game Dev Salt Mines
    First Language:
    Filipino
    Primarily Uses:
    VNM
    This is not a modification of the original RGSS3.dll.
    This did not modify the original game.exe and they created their own.
    Therefore, there's no reverse engineering going on that modifies the exe or dll.
     
  2. ??????

    ?????? Diabolical Codemaster Veteran

    Messages:
    6,264
    Likes Received:
    2,310
    Location:
    Your OS
    First Language:
    Binary
    Primarily Uses:
    RMMV
    I did not modify the rgss.dll. I did not modify the game exe. I created my own (that called the functions within the rgss.dll that added new code into the ruby environment on game launch - exactly like this system does). But either way, I'm not trying to cause a fuss. :)
     
  3. TheSorcerer

    TheSorcerer Villager Member

    Messages:
    19
    Likes Received:
    62
    First Language:
    English
    Primarily Uses:
    RMVXA
    Great to have that cleared up. :)

    But...

    He was told he was reverse engineering as the functions contained in the dll were (and still are) not publically available.

    Now that it is no longer an issue, can I please request a copy of the functions and an explanation of what they all do as well, to save me 'reverse engineering' with 'dllviewer.exe'.

    Ta :)


    Well, yes. The other thread was discouraged by a staff member also. In that instance, would it not have been reasonable to expect the staff member would ask higher up for an official stance? Rather than kill of an awesome project through inaction?

    If I were a staff member, I would have popped my head over the desk to ask the dude on the other side "is this ok"?

    Now we have a case of one staff member say they "think it is ok" and the other saying "I don't think this is ok".

    Which is it?
     
    Last edited: May 29, 2019
  4. Archeia

    Archeia Level 99 Demi-fiend Staff Member Developer

    Messages:
    14,515
    Likes Received:
    14,142
    Location:
    Game Dev Salt Mines
    First Language:
    Filipino
    Primarily Uses:
    VNM
    They're not going to be public. If you insist I will close down this project forcibly for you trying to access closed source code.

     
  5. TheSorcerer

    TheSorcerer Villager Member

    Messages:
    19
    Likes Received:
    62
    First Language:
    English
    Primarily Uses:
    RMVXA
    So you are saying I should reverse engineer the functions?


    No one has ever mentioned anything about accessing closed source code. Anywhere...
     
    Last edited: May 29, 2019
  6. bgillisp

    bgillisp Global Moderators Global Mod

    Messages:
    11,581
    Likes Received:
    11,566
    Location:
    USA
    First Language:
    English
    Primarily Uses:
    RMVXA
    No, they are saying stop asking as they are not going to give them to you. It's as simple as that. Now please only post on this thread if you have something to add to the discussion on how the DirectX features work or wish to report a scripting issue.

    PS: Only one staff member has said anything, and staff has changed in the last 4 years. I'm not staff. Also remember companies can change their mind in 4 years, and are free to do so, and they can change them again tomorrow.
     
  7. TheSorcerer

    TheSorcerer Villager Member

    Messages:
    19
    Likes Received:
    62
    First Language:
    English
    Primarily Uses:
    RMVXA
    Hmmm. You are not getting the point.

    I personally don't wan't the functions at all.


    Um, no. No they can't. The company is bound by the EULA at that point of version release. You can't retrospectively change a EULA.

    Looking at function names is a far cry from reverse engineering. If I look inside someones car window, can I be charged with breaking and entering? Can't even be charged with trespassing if the car is parked on the street.
     
    Last edited: May 29, 2019
  8. bgillisp

    bgillisp Global Moderators Global Mod

    Messages:
    11,581
    Likes Received:
    11,566
    Location:
    USA
    First Language:
    English
    Primarily Uses:
    RMVXA
    You're not getting the point either. How they got them or permission is not relevant to you, nor is it information you need to know.
     
  9. TheSorcerer

    TheSorcerer Villager Member

    Messages:
    19
    Likes Received:
    62
    First Language:
    English
    Primarily Uses:
    RMVXA
    Interesting. I would have thought that a better path would have been 'to get permission, what you need to do is...'

    Not a problem.

    No further replies on this topic from me, as requested. :)
     
  10. bgillisp

    bgillisp Global Moderators Global Mod

    Messages:
    11,581
    Likes Received:
    11,566
    Location:
    USA
    First Language:
    English
    Primarily Uses:
    RMVXA
    Sorry, I just don't know HOW you can get permission, else I would have posted that too. No offense meant.
     
    TheSorcerer likes this.
  11. dsiver144

    dsiver144 Peaceful Days Dev Veteran

    Messages:
    239
    Likes Received:
    721
    Location:
    Vietnam
    First Language:
    Vietnamese
    Primarily Uses:
    RMVXA
    Has anyone tested this with an AMD graphic card? I saw the note this in his web page:
    "Crashes may happen on AMD graphic cards when running RGD. It is still unknown whether the crashes are caused by incompatibility of DirectX9 and AMD graphics. There is no solution for this issue at present."
     
  12. Heirukichi

    Heirukichi Veteran Veteran

    Messages:
    1,027
    Likes Received:
    376
    Location:
    Italy
    First Language:
    Italian
    Primarily Uses:
    RMVXA
    @dsiver144 I tested it with an AMD A8 + Radeon R5 and it works even better than with my other machine with Intel + NVidia. I think that it goes on per-case-basis. I am afraid you have to test it on your own.
     
    dsiver144 likes this.
  13. dsiver144

    dsiver144 Peaceful Days Dev Veteran

    Messages:
    239
    Likes Received:
    721
    Location:
    Vietnam
    First Language:
    Vietnamese
    Primarily Uses:
    RMVXA
  14. Romanticist

    Romanticist Veteran Veteran

    Messages:
    161
    Likes Received:
    84
    First Language:
    English
    Primarily Uses:
    RMVXA
    While in fullscreen, if I resize the window (in the F1 menu), the game crashes! I'm sure this has been pointed out before - unless I made a mistake? Is this supposed to happen? (well, I'm sure it's not "supposed" to, but is this a known error?)
    Other than that, this works spectacularly. Thank you for your hard work :LZYpraise:

    EDIT: Oh! Also, I have a resolution of 512x288. On the input screen, not all of the inputs show at the same time, so you have to scroll; this is totally fine. The problem comes when you scroll, everything below the "Key X" option appears blank :kaoeh:
    Curious if it was a glitch that had to do with my window size, I changed the size to 640x480, and sure enough, the problem was gone. But I want to keep the 512x288 resolution, so is there any way to fix this?


    EDIT2: I managed to fix the key input screen issue by moving things around and resizing the "rectangles" so that it all fits, so that's one problem solved!
    Now my only big concern is of the game crashing when scaling the game window in fullscreen mode. Perhaps the resize option could simply be disabled in fullscreen mode?

    EDIT3: This isn't a huge problem but it is something to point out. With Neon Black's Large Sprite ☆ Display Fix, my character's head will appear under the star tile for a split second before he appears over the star tile. This didn't happen in the original game.exe. What should happen is that the character does not appear under the tile if he is standing in front of it.
    Hmm... although it appears to only be happening with one of my tiles. Really bizarre.
     
    Last edited: Jun 13, 2019
  15. Romanticist

    Romanticist Veteran Veteran

    Messages:
    161
    Likes Received:
    84
    First Language:
    English
    Primarily Uses:
    RMVXA
    Sorry for the double post but I don't want this to get passed over in my jumble of text above, so...

    How do I implement the mouse support? I think it'd be wonderful to have.
    All I can find on the site is this:
    Code:
    # =====================================
    # Mouse
    # =====================================
     
    # 关于鼠标按键标签的约定
    # 可以和 Input 一样使用 Symbol表示按键,
    # :L, :R, :M 分别表示左、右、中按键。
    # 也可以使用数值表示,
    # 1、2、4 分别表示左、右、中按键。
    # 可以使用 | 运算来组合多个按键,
    # 如果其中一个按键满足条件就返回 TRUE 。
    # 按键标签参数省略时,
    # 表示左右中三个按键都加入判断。
     
    # Flags on mouse buttons
    # You can use symbols like module Input,
    # :L, :R, :M represents left, right and middle
    # mouse buttons respectively.
    # You can also use numbers,
    # 1, 2, 4 means left, mid and right buttons.
    # You may use | operator to combine them.
    # The functions return true if one of the
    # buttons in combination meets the requirement.
    # When the button flag is omitted,
    # all the three buttons are added in combination.
     
    # =====================================
     
    # 模块方法 Module Methods
     
    # =====================================
     
    update
     
    # 刷新鼠标按键状态。
    # 和 Input.update 功能与用法相似。
     
    # Updates mouse button state.
    # Similar to Input.update.
     
    # =====================================
     
    x
     
    # 获取鼠标相对于窗口的 x 坐标。
     
    # Gets mouse x coordinate related to window.
     
    # =====================================
     
    y
     
    # 获取鼠标相对于窗口的 y 坐标。
     
    # Gets mouse y coordinate related to window.
     
    # =====================================
     
    up?([key])
     
    # 判断鼠标是否刚刚弹起。
    # key: 按键标签。
     
    # Determines if the button is released.
    # key: key flag.
     
    # =====================================
     
    down?([key])
     
    # 判断鼠标是否刚刚按下(与 click? 相同)。
    # key: 按键标签。
     
    # Determines if the button is clicked.
    # key: key flag.
     
    # =====================================
     
    click?([key])
     
    # 判断鼠标是否点击 (与 down? 相同)。
    # key: 按键标签。
     
    # Determines if the button is clicked.
    # key: key flag.
     
    # =====================================
     
    dbl_clk?([key])
     
    # 判断鼠标是否双击。
    # key: 按键标签。
     
    # Determines if the button is double clicked.
    # key: key flag.
     
    # =====================================
     
    press?([key])
     
    # 判断鼠标是否处于按下状态。
    # key: 按键标签。
     
    # Determines if the button is in pressed state.
    # key: key flag.
     
    # =====================================
     
    scroll
     
    # 返回鼠标的滚轮位置。
    # 此处获取的是滚轮的总计位置,不操作滚轮时,
    # 这个值将维持在之前的位置。
     
    # Returns scroll position of mouse.
    # The value returned is the total position
    # of mouse scroll. When the scroll is not
    # in operation, this number will remain on
    # its previous value.
     
    # =====================================
     
    move
     
    # 返回鼠标是否刚刚移动。
     
    # Determines whether the mouse is just moved.
     
    # =====================================
     
    set_pos(x, y)
     
    # 设置鼠标的位置。
    # x: 鼠标位置的 x 坐标。
    # y: 鼠标位置的 y 坐标。
     
    # Sets mouse position.
    # x: x coordinate of mouse.
    # y: y coordinate of mouse.
     
    # =====================================
     
    set_cursor(cursor)
     
    # 设置鼠标图形。
    # cursor: 鼠标图形,系统光标数据的指针。
     
    # Sets the cursor graphic.
    # cursor: pointer to system cursor graphic data.
     
    # =====================================
     
    sys_cursor
     
    # 恢复鼠标到系统设置。
     
    # Restores the cursor graphic to system default.
     
    # =====================================
     
    clip
    clip(x, y, width, height)
     
    # 把鼠标限制在矩形中。
    # x, y, width, height: 限制鼠标矩形的属性。
    # 当没有参数时,消除矩形限制。
     
    # Clips the mouse in a rect.
    # x, y, width, height: prop erties of rect.
    # When no parameter is given, the clip rect
    # is removed.
     
    # =====================================
     
    set_size(size)
     
    # 设置屏幕放大时的鼠标矫正。
    # size: 屏幕大小。
    #       获取的鼠标 x, y 将除以 size 。
     
    # Sets mouse adjustment when screen resizes.
    # size: screen scale factor.
    #       mouse x and y will be divided with size.
     
    # =====================================
     
    # 模块属性 Module Properties
     
    # =====================================
     
    visible
     
    # 设置系统鼠标指针在游戏窗口内是否可见。
     
    # Gets or sets system mouse visibility
    # in game window.
     
    # =====================================
    But I'm not sure what that is :/ Well, I'm guessing I gotta write a script for it?
     
    Last edited: Jun 14, 2019
  16. Engr. Adiktuzmiko

    Engr. Adiktuzmiko Chemical Engineer, Game Developer, Using BlinkBoy' Veteran

    Messages:
    14,405
    Likes Received:
    2,819
    Location:
    Philippines
    First Language:
    Tagalog
    Afaik the actual script for the mouse is embedded into the RGD.exe itself or its required files.

    But by default, it doesnt do anything in the game. It simply provides you of a way to use mouse on your game, which means whatever mouse functionality you wanna add needs to be scripted by you. You would be using the methods described in that file to create your own methods / mouse system.

    Like if you'd want your character to move in the map using mouse clicks, you'd create a script that hooks to the map update method which then utilizes the included press? and x/y methods of RGD's mouse support to determine if the character should move and to where.

    Without RGD's mouse support, you will first need to figure out how to write a script or a dll that will read the mouse properties for you. But since RGD has done that part for you, all you need to do know is to use those methods to implement the mouse features that you want.
     
    Last edited: Jun 14, 2019
    Romanticist likes this.
  17. Romanticist

    Romanticist Veteran Veteran

    Messages:
    161
    Likes Received:
    84
    First Language:
    English
    Primarily Uses:
    RMVXA
    Alright, I'll give it a go then. I might be asking for help in the scripting section though, haha
     
    Engr. Adiktuzmiko likes this.
  18. Marsigne

    Marsigne Sephiroth Veteran

    Messages:
    1,805
    Likes Received:
    4,547
    Location:
    Jenova
    First Language:
    Other
    Primarily Uses:
    N/A
    This looks cool. Is it plug and play? ;)
     
  19. Heirukichi

    Heirukichi Veteran Veteran

    Messages:
    1,027
    Likes Received:
    376
    Location:
    Italy
    First Language:
    Italian
    Primarily Uses:
    RMVXA
    Yes, it is. You only need to copy the executable file in your project folder.
     
  20. Marsigne

    Marsigne Sephiroth Veteran

    Messages:
    1,805
    Likes Received:
    4,547
    Location:
    Jenova
    First Language:
    Other
    Primarily Uses:
    N/A
    Thanks, I have an Nvidia graphics card and I'd love to try this out sometime. :)
     

Share This Page